14

我有一个简单的表单,我正在为其进行客户端验证。要进行验证,所有字段都不应留空。这就是我的做法:

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

出于某种原因,我的函数总是返回 false,即使所有字段都已填满。

4

4 回答 4

38

您不能从匿名函数中返回 false。此外,如果它确实有效,如果您的第一个字段为空,您将返回 false,否则返回 true,并完全忽略其余字段。可能有更优雅的解决方案,但您可以执行以下操作:

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

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

编辑啊,我被打败了,但我的解释仍然有效,希望有帮助。

于 2013-09-20T00:45:34.657 回答
6

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

尝试

function validateForm() {
    var valid = true;
    $('.form-field').each(function () {
        if ($(this).val() === '') {
            valid = false;
            return false;
        }
    });
    return valid
}
于 2013-09-20T00:43:26.493 回答
1
function validateForm() {
    var invalid= 0;
    $('.form-field').each(function () {
        if ($(this).val() == '') {
            invalid++;
        }
    });

   if(invalid>0)
       return false;
   else
       return true;
}
于 2013-09-20T00:53:56.463 回答
-1

这是一个类似的方法:

function validateForm() {
  var valid = true;
  $('.form-field').each(function() {
    valid &= !!$(this).val();
  });
  return valid;
}

!!只是将输入值转换为布尔值

于 2017-08-28T22:05:17.643 回答