从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