2012-05-31 63 views
2

我有下面的表單輸入元素,每個元素具有相同的名稱「評級」,如下所示。使用JQuery .serialize()組合具有相同名稱的表單元素?

<input type="checkbox" checked="checked" value="5" id="rating5_2053" name="rating"> 
<input type="checkbox" checked="checked" value="4" id="rating4_2053" name="rating"> 
<input type="checkbox" checked="checked" value="3" id="rating3_2053" name="rating"> 

<input type="checkbox" checked="checked" value="2" id="rating2_2053" name="rating"> 
<input type="checkbox" checked="checked" value="1" id="rating1_2053" name="rating"> 
<input type="checkbox" checked="checked" value="0" id="rating0_2053" name="rating"> 

當使用

$form.serialize(); 

和提交表單,

編輯:使用jQuery序列化()導致和操作對於GET請求的查詢字符串,它結束了像以下:

&rating=5&rating=4&rating=3&rating=2&rating=1&rating=0 

它有很好的理由做到這一點,但在我的情況下,我不需要d那個。

我想知道是否有一種方法,我可以配置它來做下面的代替?

&rating=5,4,3,2,1,0 

感謝

+0

真的很簡單,只需將名稱切換到「rating []」並爆炸評級數組。 – MetalFrog

+0

不確定你的意思,但我不能更改字段名稱。 – Pricey

+0

在你的輸入中,'name'屬性?如果將它設置爲數組,它可以處理多個值,而不會像查詢字符串那樣產生衝突。 – MetalFrog

回答

4

在這裏你去

var ratingData = [], 
    data = $('form').find('input:not([name="rating"])').serialize(); 
$('form').find('input[name="rating"]').each(function(){ 
    ratingData.push(this.value); 
}); 
data += '&rating='+ratingData.join(','); 
console.log(data); 

http://jsfiddle.net/Ejf45/1/

+0

感謝您的答案,但我的問題是有沒有辦法配置JQuery的Serialize()來做到這一點?因爲我的形式有更多的元素,我沒有顯示。我開始認爲我必須操縱Serialize()給出的結果字符串。 – Pricey

+0

不,'serialize'不採用任何參數:http://api.jquery.com/serialize/雖然我只是編輯問題做你想做的事情。 –

2

你可以嘗試這樣的事情:)

var ratings="rating="; 

$('input[name="rating"]:checked').each(function(){ 

    var temp = $(this).val(); 

    ratings = ratings+ temp +","; 

}); 

alert(ratings);​ 

Jsfiddle Link

+0

請注意'[@''屬性選擇器在1.3(3年前)中被刪除。 – pimvdb

+0

我已經更新了選擇器..添加了Jsfiddle鏈接too..check out .. –

+0

感謝您的答案,但我的問題是,有沒有一種方法來配置JQuery的Serialize()來做到這一點?因爲我的形式有更多的元素,我沒有顯示。我開始認爲我必須操縱Serialize()給出的結果字符串? – Pricey

相關問題