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

标签 javascript vb.net listbox

我正在尝试用 JavaScript 为我的 vb.net 页面实现一个自定义验证器。此验证器应检查多选列表框中是否没有任何选定值,如果是则弹出错误消息。

问题是,我想在客户端执行此操作,但在我的“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;
 }

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

我想在另一个 javascript 函数中填充另一个数组作为“真正的选定数组”,并在每次函数触发时将其值与选定的选项进行比较。但我认为应该有更好的方法。

那么...有没有一种直接的方法可以从 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();"/>

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

enter image description here

关于javascript - 从 ListBox 中获取所有选定的值(客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149981/

相关文章:

c# - Webbrowser 每个控制不同的代理

c# - 在 Visual Studio 中使用不同语言的多个 Web 项目

wpf - 自定义样式列表框 - 如何保留所选项目的样式?

silverlight - MVVM 列表框更新内容维护所选项目 Silverlight

c# - 嵌入列表框初始焦点的文本框

javascript - 使用 jquery 更改输入的 id

javascript - 使用 AJAX 和 JSON 将 JavaScript 数据发送到服务器并从服务器检索数据

.net - VB.Net中App.Path和App.EXEName的等价物是什么

javascript - 随机 css 属性对每个框应用不同的数字

javascript - 未定义窗口 - react-draft-wysiwyg 与下一个 js (ssr) 一起使用