2011-09-29 40 views
3

我有数组文本框类似下面jQuery的不同阵列

<input type="text" name="txtname[]" value="single" /> 
<input type="text" name="txtname[]" value="twin" /> 
<input type="text" name="txtname[]" value="single" /> 
<input type="text" name="txtname[]" value="dulex" /> 
<input type="text" name="txtname[]" value="single" /> 

我想告诉那些价值...

单-------- 3
双---- ---- 1
dulex -------- 1

+0

为什么你多个文本字段(那些不是文本区域)具有相同的名称?为什么名称有“[]”? “show”是什么意思?在页面上?你样本中3,1和1的意义是什么?帮助我们帮助你。 –

+0

你想在哪里显示值?你能否提供更多的上下文? – ipr101

+0

@AtesGoral具有相同名称和'[]'的输入是完全有效的,并且允许您基本上将数组发送到服务器。 –

回答

1

您可以SA Y本:

var all = $(":text"); 
var uniqueNames = jQuery.unique(all.map(function(){return $(this).attr("value"); })); 
jQuery.each(uniqueNames, function(){ 
    console.log(this + "---" + all.filter("[value=" + this + "]").length); 
}); 

的代码是自我描述:

  1. 找到独特的价值
  2. 指望他们在原来的阵列

见这里的例子:http://jsfiddle.net/BPxTd/

8
var txtname = $(':input[name="txtname[]"]').map(function(a,b){ return $(b).val(); }).toArray(); 

var unique = {}; 
$.each(txtname, function(a,b){ 
    if (!unique[b]) 
     unique[b] = 0; 
    unique[b]++; 
}); 

unique结束:

({single:3, twin:1, dulex:1}) 

UPDATE

如果你想把它当作一个jQuery add-on

$.fn.extend({ 
    unique_count: function(){ 
     var unique = {}; 
     this.each(function(a,b){ 
      var v = $(b).val(); 
      if (!unique[v]) 
       unique[v] = 0; 
      unique[v]++; 
     }); 
     return unique; 
    }, 
    unique_vals: function(){ 
     var unique = []; 
     $.each($(this).unique_count(), function(a,b){ unique.push(a); }); 
     return unique; 
    } 
}); 

,输出为:

var $inputs = $(':input[name="txtname[]"]'); 
$inputs.unique_count() // = Object: {single:3, twin:1, dulex:1} 
$inputs.unique_vals() // = Array: ["single", "twin", "duplex"] 
+0

如果可以的话,我会给你一个额外的+1,因为能够推断出问题(原始形式)是关于什么的...... –