2012-03-13 36 views
1
<select multiple="multiple" class="listBox" name="drop1" id="toList"> 
    <option value="1">John Doe (1)</option> 
    <option value="2">John Doe (2)</option> 
    <option value="3">John Doe (3)</option> 
    <option value="4">John Doe (4)</option> 
    <option value="5">John Doe (5)</option> 
</select> 

我試圖能夠抓住這個toList中的每一個選項,並建立一個分隔列表,然後我會發布到另一個頁面。jquery多選框

這樣做的最有效方法是什麼?

我原以爲這樣做的:

$(#toList).each(function() { 
    var myList = myList + $(this).val(); 
    }); 

$.post('somepage.asp', userList: myList); 

什麼是實現這一目標的最佳方式是什麼?

+0

您是否想要每個選項或每個選定的選項? – 2012-03-13 21:01:51

+0

這對我來說很不錯。 – 2012-03-13 21:02:19

+0

@RoryMcCrossan每個選項。他們從另一個盒子裏創建一個列表到這個盒子裏。所以這個盒子裏的所有東西我都假設他們想要發送信息。 – 2012-03-13 21:06:38

回答

3

這應該很好地工作:

var myList = [] 
$("#toList > option").each(function() { 
    myList.push($(this).val()); 
}); 

$.post('somepage.asp', userList: myList.join(",")); 

或者,如果你只是想選擇的值:

var myList = [] 
$("#toList > option:selected").each(function() { 
    myList.push($(this).val()); 
}); 

$.post('somepage.asp', userList: myList.join(",")); 
0

您可以嘗試jQuery的map()方法。

var myList = $('#toList option').map(function(){ return this.value; }); 
alert(myList.toArray().join(','));​ 

map()通過在當前的各元件通過與之匹配的功能設定,製造含有的返回值的新jQuery對象。

參考 - http://api.jquery.com/map/

工作演示 - http://jsfiddle.net/Nr4g9/

1

如果你想每一個選擇的值,你可以使用.val()select如JavaScript將自動爲您提供一個逗號分隔的選定值的列表:

$.post('somepage.asp', userList: $("#toList").val()); 

如果你想選擇的每一個值,然後推到一個數組:

var values = []; 
$("option", this).each(function() { 
    values.push($(this).val()); 
}); 
$.post('somepage.asp', userList: values.join(',')); 
+0

工作就像一個魅力,目前我警惕的價值觀,它切斷了。數組的大小是否有限制,有時我可能會向上傳遞5,000個數字。 – 2012-03-13 21:54:31