退出javascript函数

时间:2013-04-01 07:55:17

标签: javascript jquery

我看到很多地方有类似问题,但无法修复。

这是我的功能:

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()但没有用。

3 个答案:

答案 0 :(得分:3)

return将从它所在的函数返回。在您的代码中,这是您传递给each的匿名函数。请参阅documentation for each

  

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

您正在返回true,而不是false,因此您不会停止循环。在功能的第5行将true更改为false

答案 1 :(得分: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。

答案 2 :(得分: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()"