我有一个简单的表单,我正在进行客户端验证。 要进行验证,不应将任何字段留空。 这就是我的方法:
function validateForm() {
$('.form-field').each(function() {
if ( $(this).val() === '' ) {
return false
}
else {
return true;
}
});
}
由于某种原因,我的函数总是返回false,即使所有字段都已填满。
答案 0 :(得分:33)
您无法在匿名函数中返回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"]')
编辑啊,我受到了打击,但我的解释仍然有效,希望对您有所帮助。
答案 1 :(得分:4)
您从内部函数返回而不是从validate
方法返回
尝试
function validateForm() {
var valid = true;
$('.form-field').each(function () {
if ($(this).val() === '') {
valid = false;
return false;
}
});
return valid
}
答案 2 :(得分:1)
function validateForm() {
var invalid= 0;
$('.form-field').each(function () {
if ($(this).val() == '') {
invalid++;
}
});
if(invalid>0)
return false;
else
return true;
}
答案 3 :(得分:-1)
这是一种类似的方法:
function validateForm() {
var valid = true;
$('.form-field').each(function() {
valid &= !!$(this).val();
});
return valid;
}
!!
只是将输入值转换为bool