jQuery确保填写所有表单字段

sf8*_*f89 13 javascript forms validation jquery

我有一个简单的表单,我正在进行客户端验证.要进行验证,不应将任何字段留空.这是我的方式:

function validateForm() {
  $('.form-field').each(function() {
    if ( $(this).val() === '' ) {
      return false
    }
    else {
      return true;
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,即使填写了所有字段,我的函数也总是返回false.

Gut*_*tsy 33

您不能在匿名函数中返回false.此外,如果它确实有效,如果第一个字段为空,则返回false,否则返回true,并完全忽略其余字段.可能有一个更优雅的解决方案,但你可以做这样的事情:

function validateForm() {
  var isValid = true;
  $('.form-field').each(function() {
    if ( $(this).val() === '' )
        isValid = false;
  });
  return isValid;
}
Run Code Online (Sandbox Code Playgroud)

另一个建议:这需要您使用该formfield类来装饰所有表单字段.您可能对使用其他选择器进行过滤感兴趣,例如$('form.validated-form input[type="text"]')

编辑啊,我打了一拳,但我的解释仍然有效,希望有帮助.

  • $(':required')是更优雅的方法,实际上尊重根据需要在语义上定义的任何元素 (4认同)

Aru*_*hny 6

你是从内部函数而不是validate方法返回

尝试

function validateForm() {
    var valid = true;
    $('.form-field').each(function () {
        if ($(this).val() === '') {
            valid = false;
            return false;
        }
    });
    return valid
}
Run Code Online (Sandbox Code Playgroud)