从JavaScript中的内部函数返回?

时间:2010-11-24 22:00:31

标签: javascript jquery

我有一个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

我如何以不同的方式构建它以实现我想要的目标?

5 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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

答案 3 :(得分:0)

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

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