最简单的jQuery验证|只有边境&背景没有文字?

时间:2011-12-31 05:25:46

标签: jquery forms web validation

我一直在寻找如何进行最简单的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;
    }
}
});

1 个答案:

答案 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'));