[英]Jquery multi select box
<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中的每個選項並構建一個分隔列表,然后我將發布到另一個頁面。
這樣做最有效的方法是什么?
我原以為是這樣做的:
$(#toList).each(function () {
var myList = myList + $(this).val();
});
$.post('somepage.asp', userList: myList);
完成此任務的最佳方法是什么?
這應該很好地工作:
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(","));
如果你想要每個選定的值,你可以在select
上使用.val()
,因為javascript會自動為你提供所選值的逗號分隔列表:
$.post('somepage.asp', userList: $("#toList").val());
如果你想要select的每個值,那么推送到一個數組:
var values = [];
$("option", this).each(function() {
values.push($(this).val());
});
$.post('somepage.asp', userList: values.join(','));
你可以試試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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.