javascript - jQuery MultiSelect .val() 与 "getChecked"不一致

标签 javascript jquery multi-select

我正在使用 Eric Hynds 的 MultiSelect 控件: http://www.erichynds.com/blog/jquery-ui-multiselect-widget

该控件似乎工作正常,除了当我尝试获取值时,.val() 方法不会为我提供所有选中的项目 - 它只为我提供所选列表中的单个项目。

要获取我需要的所有项目,请使用更长的形式: var value = $("#retailersSelect").multiselect("getChecked").map(function () {return this.value;}).get();

知道为什么 .val() 不会给我一个结果数组吗?

完整 HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>Test Page</title>
    <link href="/css/redmond/jquery-ui-1.10.2.custom.css" rel="stylesheet" type="text/css" />
    <link href="/css/jquery.multiselect.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="/js/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="/js/jquery-ui-1.10.2.custom.js"></script>
    <script type="text/javascript" src="/js/jquery.multiselect.js"></script>
</head>
<body>
    <form action="test.htm" method="post">
        <div id="main">

            <select id="retailersSelect">
                <option value=""></option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
            </select>

            <br />
            <input type="button" id="ExecuteReportButton" value="Butt" />

            <script type="text/javascript">
                $(function () {

                    //set up the multi selects
                    $("#retailersSelect").multiselect({
                        selectedList: 3, // 0-based index
                        header: false,
                        noneSelectedText: "Select a retailer"
                    });

                    $("#ExecuteReportButton").click(function () {
                        var values = $("#retailersSelect").multiselect("getChecked").map(function () {
                            return this.value;
                        }).get();
                        alert(values); //GIVES ME THE FULL ARRAY - NICE!

                        var values2 = $("#retailersSelect").val();
                        alert(values2); //ONLY GIVES ME A SINGLE ITEM - :(

                        return false;
                    });
                })
            </script>
        </div>
    </form>
</body>
</html>

最佳答案

您忘记了标记中一些非常重要的内容。您没有将 select 设置为实际接受多个值。

<select multiple id="retailersSelect">

关于javascript - jQuery MultiSelect .val() 与 "getChecked"不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15735632/

相关文章:

javascript - 返回确认取消按钮不起作用

javascript - 过滤数据后采取行动

javascript - 使用 JavaScript 添加带有行的选择框

jquery - 在不使用 $.GET 的情况下在 HTML 中内联 SVG

javascript - 无法使用数据实时搜索 + jquery 多个填充 Bootstrap 选择

javascript - Mozilla Addon Development - 在不同域的窗口之间进行通信

javascript - 如何在分配变量时使用 async/await?

javascript - 如何中断动画

angular - ng-select 在 Angular 6 中以编程方式删除元素

javascript - 验证 jQuery 多选复选框