Jquery序列化数组 - 仅返回匹配值

时间:2012-08-20 14:25:47

标签: jquery arrays

我有一个表单并使用Jquery在输入更改时创建一个名为“fields”的数组:

var fields = $(":input").serializeArray();

然后我在.each函数中使用此数组来显示项目列表:

jQuery.each(fields, function(i, field){

//get multiple values into array and perform action for each
val = field.value;
name = field.name;
var valarray = val.split(',');
for (var i in valarray) {
    //get each answer
    val = $.trim(valarray[i]);

    $("#pid"+val).show();
}//end for
});//end each

目前,如果选择了3个单选按钮,console.log会显示此信息:

[Object { name= "question1" ,  value= "aa,bb,cc,dd" }, Object { name= "question2" ,  value= "bb,cc" }, Object { name= "question3" ,  value= "cc,ee" }]

显示所有值aa,bb,cc,dd和ee。

我想做的,而不是显示所有值,是比较每个问题的值,只显示所有问题中出现的值(本例中为cc)。想法是过滤列表,所以如果只选择了question1和question2,将显示“bb”和“cc”。除此之外,如果选择第四个问题并使用值“dd”并且因此没有匹配所有问题的值,我想返回一个警报并删除/取消选择最后一个值,因此还原为只是“cc”。

我无法弄清楚如何比较值以仅显示匹配的值。我已经在stackoverflow上使用了几个答案的代码而且我已经尝试过计算实例,但似乎是围绕着圆圈,所以任何帮助都会非常感激。

我希望我已经给了你足够的信息。感谢。

1 个答案:

答案 0 :(得分:0)

我不知道我是否成功地抓住了所有人,或者是否只是错过了但是我通过计算每个答案的出现次数来计算出一个解决方案,这等于所提问题的数量(即答案显示为所有问题),将其添加到另一个数组。不管怎样,谢谢!