JQuery UI Multiselect如何获取选定的选项值

时间:2012-01-05 21:02:58

标签: jquery-ui multi-select

在迈克尔·奥弗雷特(Michael Aufreiter)搜索如何在JQuery UI小部件中获取选定的选项值时,我浪费了一天的时间。这是他的演示站点和github的链接:http://quasipartikel.at/multiselect/

因此,我只需要选择选项的值字段,而无需POST / GET发送到PHP脚本。 我尝试了很多方法并且没有结果。 需要你的帮助和想法

*找到很多关于jquery ui multiselect的主题但由于Aufreiter而无用:s *

5 个答案:

答案 0 :(得分:15)

那应该有用。使用Chrome控制台进行测试

$("#countries").val();

答案 1 :(得分:3)

我去了上面列出的网站,并且能够在我的Chrome控制台中运行它:

$('.ui-multiselect .selected li').each(function(idx,el){ console.log(el.title); });

似乎您想要的值存储在div.selected元素中列表项的title属性中。

修改

卫生署!那么你当然想要价值观。不好意思,朋友。完全错过了。真货存储在jQuery data()个对象中。在这种情况下,您想要的密钥是'optionLink'。它维护对选项元素的引用。 '.selected'div中的每个列表项都使用jQuery.data()方法向其添加基础选项。

因此,您需要获取所选列表项,迭代,从数据jQuery数据存储中获取'optionLink',然后获取值。

以下代码适用于示例页面:

$('.ui-multiselect .selected li').each(function(idx,el){
    console.log(el);
    var link = $(el).data('optionLink');
    // link now points to a jQuery wrapped <option> tag


    // I do a test on link first.  not sure why, but one of them was undefined.
    // however, I got all four values.  So I'm not sure what the first <li>
    // is.  I'm thinking it's the header...
    if(link){

        // here's your value. add it to an array, or whatever you need to do.
        console.log(link.val());
    }

});

这是我见过的第一个多选。它很光滑。但我同情你试图摆脱困境的挫败感。 “getSelectedOptions()”方法会很好。

干杯

答案 2 :(得分:1)

尝试在关闭事件中访问所选值。

e.g。

$("#dropdown").multiselect({
    header: false,
    selectedList : 1,
    height: "auto",
}).multiselectfilter().bind("multiselectclose", function(event, ui) {
    var value = $("#dropdown").val();
});

希望有所帮助。

答案 3 :(得分:1)

最佳解决方案

$('#select').multiselect({
    selectAllValue: 'multiselect-all',
    enableCaseInsensitiveFiltering: true,
    enableFiltering: true,
    height: "auto",
    close: function() {
            debugger;
            var values = new Array();
            $(this).multiselect("getChecked").each(function(index, item) {

                values.push($(item).val());
            });
            $("input[id*=SelectedValues]").val(values.join(","));
    }
}); 

答案 4 :(得分:0)

你可以试试这个:

$('#ListBoxId').multiselect({
    isOpen: true,
    keepOpen: true,
    filter: true
});