从JavaScript中的内部函数返回?

我有一个jQuery驱动的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 

我怎样才能以不同的方式构建它来做我想要的呢?

只需使用变量来跟踪validation:

 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; 

如果字段值为空,则在forEach闭包中使用布尔值,该布尔值将设置为true。 在提交表格之前检查该值

听起来你想要做以下事情

  • 使用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 } 

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

如果您的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