jQuery确保所有表单字段都已填写

Posted

技术标签:

【中文标题】jQuery确保所有表单字段都已填写【英文标题】:jQuery make sure all form fields are filled 【发布时间】:2013-09-25 06:38:38 【问题描述】:

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

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

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

【问题讨论】:

你的函数没有返回任何东西。每个都为每个 .form-field 元素调用内部函数。 validateForm 从不返回值。 我感觉就是这样。谢谢! 【参考方案1】:

您不能在匿名函数中返回 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"]')

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

【讨论】:

是的,非常有帮助,谢谢!我知道我在退货方面做得不对。对 $('form input[type="text"]') 的好建议也非常感谢,它更干净。 哦,开枪,你会想在你的表单上放一个类名,否则你会验证屏幕上的每个表单! 或 $('form.validated-form :input') 来捕获文本字段。 $(':required') 是更优雅的方法,实际上尊重根据需要在语义上定义的任何元素【参考方案2】:

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

试试

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

【讨论】:

【参考方案3】:
function validateForm() 
    var invalid= 0;
    $('.form-field').each(function () 
        if ($(this).val() == '') 
            invalid++;
        
    );

   if(invalid>0)
       return false;
   else
       return true;

【讨论】:

【参考方案4】:

这是一个类似的方法:

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

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

【讨论】:

以上是关于jQuery确保所有表单字段都已填写的主要内容,如果未能解决你的问题,请参考以下文章

jquery允许取消提交后提交表单

即使所有输入字段都已填写,“此字段是必需的”也会继续显示

如何检查是不是所有字段都已填写? [C++,VS 2015,Windows 窗体]

仅当所有文本字段都已填写时才在 Swift 中启用按钮

禁用表单按钮,直到所有字段都填写完 rails 5.1

如何禁用提交按钮,直到所有文本字段都已满并选择文件