jquery根据自定义函数返回true或false

时间:2018-05-19 16:53:25

标签: javascript jquery

我想在自定义函数中绑定以下代码,如果field有值则返回true,如果field为空则返回false。仅使用一个变量进行验证,很容易。但是当验证两个数组时,我认为它可能只有自定义函数。我认为由于缺乏自定义功能,代码也变得不必要地冗长。请指导我。

$(document).on('click', '.subadd', function(){

    //I want to bind this code in function 
    var sid = [];
        $('input[name="sid[]"]').each(function(){
        if(!$(this).val()){
            $(this).addClass('border1red');
            return false;
        };
        if($(this).val()){
            $(this).removeClass('border1red');
            sid.push(this.value);
        }
    });

    var title = [];
        $('input[name="title[]"]').each(function(){
        if(!$(this).val()){
            $(this).addClass('border1red');
            return false;
        };
        if($(this).val()){
            $(this).removeClass('border1red');
            title.push(this.value);
        }
    });
 //function

 //if function return true

    if(sid.length && title.length){
        $('table#menutable tr:last').after("<tr>.....</tr>");
    };
});

1 个答案:

答案 0 :(得分:1)

首先,您可以缩短each循环。

if(!$(this).val()){
    $(this).addClass('border1red');
    return false;
} else {
    $(this).removeClass('border1red');
    title.push(this.value);
}

您也可以为选择器和数组作为参数创建一个函数。

$.validate = function(selector, array) {
    $(selector).each(function(){
        if(!$(this).val()){
            $(this).addClass('border1red');
            return false;
        } else {
            $(this).removeClass('border1red');
            array.push(this.value);
        }
    }
}

最后,代码的主要部分如下所示:

var sid = [];
var title = [];
$.validate('input[name="sid[]"]', sid);
$.validate('input[name="title[]"]', title);
if(sid.length && title.length){
    $('table#menutable tr:last').after("<tr>.....</tr>");
};