Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery根据自定义函数返回true或false_Javascript_Jquery - Fatal编程技术网

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

Javascript jquery根据自定义函数返回true或false,javascript,jquery,Javascript,Jquery,我想在自定义函数中绑定以下代码,若字段有值,则返回true;若字段为空,则返回false。仅使用一个变量进行验证很容易。但在验证两个数组时,我认为只有自定义函数才有可能。我认为由于缺少自定义函数,代码也变得不必要的冗长。请引导我 $(document).on('click', '.subadd', function(){ //I want to bind this code in function var sid = []; $('input[name="si

我想在自定义函数中绑定以下代码,若字段有值,则返回true;若字段为空,则返回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>");
    };
});

首先,您可以缩短每个循环

您还可以使用选择器和数组作为参数,为此创建一个函数

$.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>");
};

您还应该共享html以制作一个工作片段:注意:在每个内部返回false只会停止jQuery集合中对象的迭代,实际上您并没有将值返回给某个外部变量/进程。不太清楚这里需要什么。提供一个@SystemGlitch,谢谢,效果很好,但有一个问题是在哪里应用和运算符,即使一个输入为空,字段也会被添加。@AnandHmt如果需要,您可以使用两个不同的数组。我相应地更新了答案。
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>");
};