2013-10-06 34 views
1

我有一個這樣的形式:如何在使用jQuery的表單中獲得第一個唯一的多值(數組註釋)輸入?

<form> 
    <select name="user_id[]"></select> 
    <select name="user_id[]"></select> 
    <select name="user_id[]"></select> 
    <select name="user_id[]"></select> 
    <select name="tag_id[]"></select> 
    <select name="tag_id[]"></select> 
    <select name="stack_id[]"></select> 
    <!-- ... etc. --> 
</form> 

我想一個jQuery集合的名稱,包括第一多值元素:

<form> 
    <select name="user_id[]"></select> <!-- this --> 
    <select name="user_id[]"></select> 
    <select name="user_id[]"></select> 
    <select name="user_id[]"></select> 
    <select name="tag_id[]"></select> <!-- this --> 
    <select name="tag_id[]"></select>  
    <select name="stack_id[]"></select> <!-- this --> 
    <!-- ... etc. --> 
</form> 

我已經開始與$('[name$="[]"]')但我被困從那裏。是否有一個簡單的選擇器方法,或者我必須將它們全部選中並篩選出我想要的?

+0

*其次... *輸入元素的正確名稱如下:'id []'?當有人可以告訴我時,我會編輯我的問題以更清楚。 – danronmoon

+0

我不確定是否有以這種方式命名的元素的特定術語,但它並不重要。問題的核心適用於所有具有相同名稱的元素,不管是否以方括號結尾。 – Jon

+0

帶有輸入元素的輸入元素_POST_表單將繼續_POST_兩個_foo_值_bar_和_baz_,它只是一個輸入元素_輸入名稱=「foo」value =「bar」/>服務器只會選擇其中的一個。 '[]'符號只是讓服務器端引擎知道期望多個引用,所以使用不同的數據類型。 –

回答

2

沒有用這種方式選擇元素的神奇方法,所以需要一些手動工作。

首先族元素他們的名字:

var buckets = {}; // keys: "name" attribute values, values: arrays of elements 
$('[name$="[]"]').each(function() { 
    var name = this.name, 
     bucket = buckets[name] || (buckets[name] = []); 
    bucket.push(this); 
}); 

然後你可以選擇從每個桶的第一個元素,並把它放在一個jQuery對象中:

// start with an empty jQuery object 
var $firstOfEach = $([]); 

// add to the above the first element inside each bucket 
$.each(buckets, function() { $firstOfEach = $firstOfEach.add(this[0]); }); 

See it in action

相關問題