簡體   English   中英

Jquery多選框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM