从ListBox(客户端)获取所有选定的值

D I*_* Ie 11 javascript vb.net listbox

我正在尝试在我的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" />
Run Code Online (Sandbox Code Playgroud)

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;
 }
Run Code Online (Sandbox Code Playgroud)

正如我所说,由于最后(未)选中的项目将是'options'数组中唯一选择的项目,验证函数将始终返回true ...

我想在另一个javascript函数中填充另一个数组作为'true selected array',并在每次函数触发时将其值与所选选项进行比较..但我认为应该有更好的方法.

那么......有没有一种直接的方式从javascript中的多焦点列表框中获取所有选定的项目?

Vic*_*ros 5

你的问题有点不清楚,你的功能似乎有效,但我在这里回答的是你问题的最后一部分所以...有没有一种直接的方法可以从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>
Run Code Online (Sandbox Code Playgroud)

这是aspx代码,我删除了验证器

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

在浏览器的开发人员工具中,您可以看到有关对象所有属性的详细信息

在此输入图像描述


小智 1

let a1 = [
{
    Selected:false,
},
{
    Selected:false
},
{
    Selected:false
}];
Run Code Online (Sandbox Code Playgroud)

if (a1.some(i => i.Selected)) console.log(true); 否则控制台.log(假);

也许你想要什么