我正在构建一个联系表单,我需要有关jQuery验证器的帮助。
function contactform() {
$("form #submit").on("click", function() {
$("form input").removeClass("error");
validator();
// 3rd action goes here
});
});
validator()
检查是否有任何输入为空,如果是,则为其添加错误类:
function validator() {
$("form input").each(function() {
var value = $(this).val();
if (value.length <= 0) {
$(this).addClass("error");
return false;
}
});
});
现在,对于contactform()
中的第3个操作,我想说如果validator() = true
(即没有输入为空),则继续下一个代码。
我似乎无法返回validator()
的值。有人知道最好的方法吗?
答案 0 :(得分:8)
以下是使用filter
方法的另一种解决方案:
function validator() {
return $("form input").filter(function() {
return $.trim(this.value).length == 0;
}).addClass("error").length == 0;
});
function contactform() {
...
if (validator()) {
// it's OK
} else {
// there are errors
}
}
更新:使用the help @am_not_i_am进行了极大的更新。谢谢!
答案 1 :(得分:4)
您遇到的问题是您有一个嵌套的函数和闭包,这会阻止您直接返回值。
这样的事情可以解决问题:
function validator() {
var result=true;
$("form input").each(function() {
var value = $(this).val();
if (value.length <= 0) {
$(this).addClass("error");
result = false;
}
});
return result;
});
答案 2 :(得分:3)
function validator() {
var result = true;
$("form input").removeClass("error");
$('form input').each(function() {
if(!$.trim(this.value)) {
$(this).addClass('.error');
result = false;
}
});
return result;
}
function contactform() {
$("form #submit").on("click", function() {
if(validator()) { // pass the validation
} else { // fail validation
}
// 3rd action goes here
});
});