2010-11-24 103 views
2

我有一个jQuery驱动的JavaScript函数,它遍历字段列表并检查它们是否为空;如果是这样,则阻止提交表单。从JavaScript的内部函数返回?

required_fields.forEach(function(field) { 
    if (field.val() == '') 
    { 
     field.addClass('field-highlight'); 
     return false; 
    } 
    else 
    { 
     field.removeClass('field-highlight'); 
    } 
}); 

// I want to return to here from the return false point 

我该如何构造这个不同的做我想要的?

回答

5

只需使用一个变量来跟踪验证:

var is_valid = true; 

required_fields.forEach(function(field) { 
    if (field.val() == '') { 
     field.addClass('field-highlight'); 
     is_valid = false; 
     return false; 
    } else { 
     field.removeClass('field-highlight'); 
    } 
}); 

return is_valid; 

或者,您也可以只使用field-highlight类以及:

required_fields.forEach(function(field) { 
    if (field.val() == '') { 
     field.addClass('field-highlight'); 
     return false; 
    } else { 
     field.removeClass('field-highlight'); 
    } 
}); 

return $('.field-highlight').length == 0; 
0

使用布尔在foreach关闭,这如果字段值为空,则设置为true。提交表单前检查值

0

这听起来像你想要做以下

  • 更新基于它们是否具有值
  • 座表单提交如果与field-highlight类元素任何空

如果是的话请尝试以下

var anyEmpty = false; 
required_fields.forEach(function() { 
    if ($(this).value() == '') { 
    $(this).addClass('field-highlight'); 
    anyEmpty = true; 
    } else { 
    $(this).removeClass('field-highlight'); 
    } 
}); 

if (anyEmpty) { 
    // Block the form 
} 
0

你写了“forEach”函数吗?如果是这样,那可以检查anon函数的返回值,如果它是假的,则停止迭代。

+0

的forEach是一个jQuery助手功能 – 2010-11-24 22:11:46

0

如果required_fields是一个jQuery对象,你可能只是这样做:

var stop = required_fields.removeClass('field-highlight') 
          .filter("[value == '']").addClass('field-highlight') 
          .length; 

return !!stop 

或者更有效的这样吗?

var stop = required_fields.filter('.field-highlight').removeClass('field-highlight') 
          .end().filter("[value == '']").addClass('field-highlight') 
          .length; 

return !!stop