jQuery确保填写所有表单字段

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

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

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

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

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

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

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

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

尝试

 function validateForm() { var valid = true; $('.form-field').each(function () { if ($(this).val() === '') { valid = false; return false; } }); return valid } 
 function validateForm() { var invalid= 0; $('.form-field').each(function () { if ($(this).val() == '') { invalid++; } }); if(invalid>0) return false; else return true; } 

这是一个类似的方法:

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

!! 只是将输入值转换为bool