2

我在很多地方看到了类似的问题,但无法解决。

这是我的功能:

function validate_form(){
     $('#form_data input[type="text"]').each(function(){
            value = $(this).val().trim();
            if(value != '' && value != null && value != 0 ){
                   return true;
            }
     });
     return false;      
}

它没有退出return true;。我也试过e.preventDefault()但没有用。

4

3 回答 3

3

return将从它所在的函数返回。在您的代码中,这是您传递给each. 请参阅每个文档

您可以通过返回从回调函数中停止循环false

您正在返回true,而不是false因此您没有停止循环。转到函数truefalse第 5 行。

于 2013-04-01T07:59:00.137 回答
1
function validate_form(){
     $texts=$('#form_data input[type="text"]'); //cache the object
     var len = $texts.length;
     var validItems=0;
     $texts.each(function(){
            value = $(this).val().trim();
            if(value === ''){ // value of a text input cannot be null
                              // or zero unless you've changed in with JS
                   return false;
            }
            validItems++;
     });
     return len===validItems;      
}

该函数不会准确显示哪些项目无效,如果任何项目无效,则仅返回 false。

于 2013-04-01T08:06:00.710 回答
0

.each()在从主函数体返回之前,您必须先完成。您可以保留遇到的有效条目的计数器,并让返回值取决于:

function validate_form()
{
    var items = $('#form_data input[type="text"]'),
    count = items.length,
    valid = 0;

    items.each(function() {
        value = $(this).val().trim();
        if (value != '' && value != null && value != 0 ) {
            ++valid;
        }
    });

    return valid !== count;
}

false顺便说一句,如果至少有一个无效条目,我已将返回值更改为;假设您将其用作onsubmit="return validate_form()".

于 2013-04-01T07:57:32.833 回答