[英]how to get multiple selected values and items from listbox using javascript
[英]How to show multiple selected items in an ListBox
我有一個列表框,您可以在其中選擇多個項目,並將它們保存到數據庫中。 一切正常,但是當我回到列表框查看項目時,即使我選擇了3,也只選擇了第一個。
列表框:
<asp:ListBox runat="server" SelectionMode="Multiple" ID="txtEdtContactDocuments"></asp:ListBox>
碼:
for (var i = 0; i < document.getElementById('<%= txtEdtContactDocuments.ClientID %>').length; i++) {
for (var x=0;x<result.Docs.length;x++) {
if (Number(document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].value) == Number(result.Docs[x].DocType)) {
document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "selected";
} else {
document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "";
document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = false;
}
}
}
循環看起來正確,它確實找到了我選擇的3個項目,但是它們在列表中沒有突出顯示:
我也嘗試了document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = true;
但這改變了一切。 仍然只有第一個項目被選中。
這是一個算法問題。 假設result.Docs
集合中有多個項目,您將覆蓋for (var x=0;x<result.Docs.length;x++)
循環的早期迭代中可能設置的內容。
如果您放了break;
您的算法應該可以工作break;
這行之后的語句: document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "selected";
。 找到適當的項目后,它將終止內部循環。
但是,我建議重構代碼並完全擺脫內部循環。 例如,您可以將其替換為LINQ查詢。
注意:無需使用jQuery或任何其他JS框架。 您可以使用原始JavaScript輕松完成任務: https : //jsfiddle.net/hjybjz3e/
嘗試使用jQuery設置所選選項。
更換
document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "selected";
帶有:
$('#<%= txtEdtContactDocuments.ClientID %>').eq(i).attr("selected", "true");
.eq()是一個jQuery函數,用於使用[]表示法在相同的索引處選擇對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.