如何改进jquery函数

时间:2014-08-20 16:35:25

标签: javascript jquery

我正在进行验证,它工作正常,但我有很多重复代码,无法找到改进它的方法。这是:

function validate( active ){

    if( active[0].id === "mod_formSteps-1" ){

        var $inputs = $("#formSteps-1 :input:not(:submit)");
        var value = true;

        $inputs.each(function() {
            if( $(this).val().length < 1 || $(this).hasClass("error")){
                value = false;
            }
        });
        return value;   
    }
    else if( active[0].id === "mod_formSteps-2" ){

        var $inputs = $("#formSteps-2 :input:not(:submit)");
        var value = true;

        $inputs.each(function() {
            if( $(this).val().length < 1 || $(this).hasClass("error")){
                value = false;
            }
        });
        return value;   
    }
    ...

    ...
    else{
        alert("something is wrong");                
    }           
    return true;
}   

现在我有四个如果只是改变参数"mod_formStepsN""#formSteps-1"

2 个答案:

答案 0 :(得分:1)

更像这样的东西

function validate(active) {
    var numb   = active.prop('id').split('-').pop(),
        inputs = $("#formSteps-"+numb+" :input:not(:submit)"),
        value  = true;

    inputs.each(function () {
        if ($(this).val().length < 1 || $(this).hasClass("error")) {
            value = false;
        }
    });

    return value;
}

答案 1 :(得分:0)

为什么不简单:

function validate( active ){
    if(active[0].id != "")
    {
        var $inputs = $("#"+active[0].id+":input:not(:submit)");
        var value = true;

        $inputs.each(function() {
            if( $(this).val().length < 1 || $(this).hasClass("error")){
                value = false;
            }
        });
        return value;
    }
    else{
        alert("something is wrong");                
    }           
    return true;
}