簡體   English   中英

從ListBox(客戶端)獲取所有選定的值

[英]get all selected values from ListBox (client side)

我正在嘗試在我的vb.net頁面中使用JavaScript實現自定義驗證器。 此驗證器應檢查在多焦點列表框中是否沒有任何選定值,如果是,則顯示錯誤彈出。

問題是,我想做客戶端,但在我的'validateFunction'函數中,我只獲得最后一個選中(或未選中,如果它已被選中)項。 我知道如何在代碼隱藏代碼中執行此操作,但我想在客戶端執行此操作。

aspx代碼:

 <asp:ListBox ID="lbEdit" runat="server" SelectionMode="Multiple">
 </asp:ListBox>
 <asp:CustomValidator id="cvEdit" runat="server" Display="None" ControlToValidate="lbEdit" ClientValidationFunction="validateFunction"/>
 <ajax:ValidatorCalloutExtender runat="server" ID="vceEdit" TargetControlID="cvEdit" />

JavaScript代碼:

 function validateFunction(source, arguments) {
        var options = document.getElementById(source.controltovalidate).options;
            for (var i = 0; i < options.length; i++) {
                if (options[i].selected == true) {
                    args.IsValid = true;
                    return;
                }
            }
            args.IsValid = false;
 }

正如我所說,由於最后(未)選中的項目將是'options'數組中唯一選擇的項目,驗證函數將始終返回true ...

我想在另一個javascript函數中填充另一個數組作為'true selected array',並在每次函數觸發時將其值與所選選項進行比較..但我認為應該有更好的方法。

那么......有沒有一種直接的方式從javascript中的多焦點列表框中獲取所有選定的項目?

你的問題有點不清楚,你的功能似乎有效,但我將在這里回答的是你問題的最后一部分所以...有沒有直接的方法從javascript中的多焦點列表框中獲取所有選定的項目?

試試這個js功能

<script type="text/javascript">
        function validateFunction() {
            var options = document.getElementById('<% = this.lbEdit.ClientID %>').options;
            var selectedItems;
            for (var i = 0; i < options.length; i++) {
                if (options[i].selected == true) {
                    if (selectedItems) {
                        selectedItems = selectedItems + ";" + options[i].value;
                    }
                    else {
                        selectedItems = options[i].value;
                    }
                }
            }
            if (selectedItems) {
                alert(selectedItems);
                return true;
            }
            else {
                alert("No item was selected");
                return false;
            }
        }
    </script>

這是aspx代碼,我刪除了驗證器

 <asp:ListBox ID="lbEdit" runat="server" SelectionMode="Multiple" >
 </asp:ListBox>
    <asp:Button ID="test" runat="server" Text="send"  OnClientClick="return validateFunction();"/>

在瀏覽器的開發人員工具中,您可以看到有關對象所有屬性的詳細信息

在此輸入圖像描述

let a1 = [
{
    Selected:false,
},
{
    Selected:false
},
{
    Selected:false
}];

if(a1.some(i => i.Selected))console.log(true); else console.log(false);

也許你想要的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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