我一直在寻找如何进行最简单的jQuery验证。 (改变边框颜色和背景)就是这样,没有更多!没有文字或任何额外的。我见过很多方法,但代码太长了。
以下是长代码的示例。如果我有超过10个字段来验证,我不认为它是有效的方式。
$(document).ready(function(){
//global vars
var form = $("#customform");
var name = $("#name");
var email = $("#email");
//On blur
name.blur(validateName);
email.blur(validateEmail);
//On key press
name.keyup(validateName);
//On Submitting
form.submit(function(){
if(validateName() & validateEmail())
return true
else
return false;
});
//validation functions
function validateEmail(){
//testing regular expression
var a = $("#email").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
//if it's valid email
if(filter.test(a)){
email.removeClass("error");
return true;
}
//if it's NOT valid
else{
email.addClass("error");
return false;
}
}
function validateName(){
//if it's NOT valid
if(name.val().length < 4){
name.addClass("error");
return false;
}
//if it's valid
else{
name.removeClass("error");
return true;
}
}
});
答案 0 :(得分:0)
它闻起来好像你需要一些重构并提取一直重复进入自己的函数的代码:
function validateElement(element, condition) {
if(condition){
element.removeClass("error");
}
else {
element.addClass("error");
}
return condition;
}
像这样使用它(我还建议将变量转换为参数 您可以在不同的字段上使用验证器):
function validateEmail(field) {
//testing regular expression
var a = field.val(),
filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
return validateElement(field, filter.test(a));
}
validateEmail($('#email'));