gpt4 book ai didi

jquery - .each() 内的函数仅被调用一次

转载 作者:行者123 更新时间:2023-12-01 01:35:17 27 4
gpt4 key购买 nike

我有这个代码:

function paramsFormValidate()
{
isFormValid = true;
var counter = 0;
$('.par-item input[type="number"]').each(function() {
isFormValid = isFormValid && validateParameter( $(this) );
counter++;
});
console.log(counter);
return isFormValid;
}

这是为了我必须构建的自定义验证。问题是,应该为每个输入元素调用 validateParameter() 函数,但实际上只调用一次。

我已经包含了一个用于调试目的的 counter 变量(甚至在 each 循环内记录了 $(this)),但是循环看起来不错。不过 validateParameter() 只会针对循环的第一个元素被调用。

validateParameter()函数不涉及ajax调用,它只是一堆赋值和if/else语句。事实上,我什至尝试删除整个函数体并使用它:

function validateParameter()
{
console.log('meh');
return false;
}

但是当然它只会记录一个“meh”。

什么可能导致此问题?

最佳答案

Logical AND(&&)如果可以转换为 false,则返回 isFormValid;否则返回validateParameter($(this))

第一次循环 isFormValid 时为 true,因此执行 validateParameter($(this)) 并返回结果。在本例中,false 被分配给 isFormValid

循环执行isFormValid的任何连续时间都是false,因此它会被立即使用并且validateParameter($(this))不会被执行再次。

<小时/>

引用链接文档:

Operator
Logical AND (&&)

Usage
expr1 && expr2

Description
Returns expr1 if it can be converted to false; otherwise, returns expr2. Thus, when used with Boolean values, && returns true if both operands are true; otherwise, returns false.

编辑

..the validateParameter() function should be called for every input element

在这种情况下,您需要类似的东西:

function paramsFormValidate() {
isFormValid = true;

$('.par-item input[type="number"]').each(function () {
// Validate each element...
if(!validateParameter($(this)){
// validation has failed on an element, indicate the form is invalid
isFormValid = false;
}

// optionally, continue or exit if isformIsValid === false
});

return isFormValid;
}

关于jquery - .each() 内的函数仅被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15530714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com