输入[type='hidden']:first'是未定义的

Dont save item to array if 'input[type='hidden']:first' is undefined

本文关键字:first 未定义 type 输入 hidden      更新时间:2023-09-26

这段代码得到了表中的所有数据行,但是,如果第一个隐藏输入不包含文本

,我不想将item保存在数组中
 $('.save').on("click",function(){    
        var array = $.map($('table tr'), function (val, i) {
                var obj = {}, inputs = $(val).find('td input[type='hidden'],input[type='text'],select');
                obj[inputs.filter('input[type='hidden']:first').val()]
               = $.map(inputs.not('input[type='hidden':first'), 
                function (val, i) {
                    return val.value;
                });
                return obj;
            });
            var data = JSON.stringify(array);
        });

这是我的数组的一个示例结果:

[{"add":["orange","1","Yes"]}[{"":["apple","2","Yes"]}]

注意第二项,它包含空(不是"add"),我不想在我的数组中保存它。如有任何帮助,不胜感激。

见此处

试试这个:

var array = $.map($('table tr'), function (val, i) {
     var obj = {},
     inputs = $(val).find('td input[type=''hidden''],input[type=''text''],select');
     var inputVal = inputs.filter('input[type=''hidden'']:first').val();
     if (inputVal.length) {
         obj[inputVal] = $.map(inputs.not('input[type=''hidden'']:first'),
         function (val, i) {
             return val.value;
         });
     }
     return obj;
 }).filter(function (val) {
     return !$.isEmptyObject(val)
 });

如果要排除空的arrays,则必须在map调用后运行filter