【问题标题】:multiselect list is not showing options多选列表未显示选项
【发布时间】:2014-07-11 08:42:38
【问题描述】:

我在一个页面中有两个多项选择(选择城市和选择城市),我可以来回传输选项。我已经为选择城市列表提供了搜索功能。一切都按我的需要运行。

问题是,当我搜索和传输选项时,选择城市列表现在只包含当前搜索中显示的选项。我应该如何获得应该存在于列表中的剩余选项值的列表

这里是演示:http://jsfiddle.net/cs6Xb/101/ 和代码:

html:

<input id="someinput">
<br/>
<select class="select-cities" name="city" id="optlist" multiple="multiple">
    <option>Frederiksberg</option>
    <option>Vanløse</option>
    <option>Glostrup</option>
    <option>Brøndby</option>
    <option>Roskilde</option>
    <option>Køge</option>
    <option>Gentofte</option>
    <option>Hillerød</option>
    <option>Tårnby</option>
    <option>Vallensbæk</option>
</select>
</input>
<br/>
<select class="chosen-cities" name="chosen-cities-name" multiple="multiple"></select>

jQuery:

$(function () {
    var opts = $('#optlist option').map(function () {
        return [[this.value, $(this).text()]];
    });


    $('#someinput').keyup(function () {
        var rxp = new RegExp($('#someinput').val(), 'i');
        var optlist = $('#optlist').empty();
        opts.each(function () {
            if (rxp.test(this[1])) {
                optlist.append($('<option/>').attr('value', this[0]).text(this[1]));
            }
        });

    });
    $('.select-cities').click(function () {
        $('.select-cities option:selected').remove().appendTo('.chosen-cities');
        opts = $('#optlist option').map(function () {
            return [[this.value, $(this).text()]];
        });
    });

    $('.chosen-cities').click(function () {
        $('.chosen-cities option:selected').remove().appendTo('.select-cities');
        opts = $('#optlist option').map(function () {
            return [[this.value, $(this).text()]];
        });
    });


});

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您可以隐藏,而不是删除与过滤器值不匹配的那些:

    opts.each(function () {
        if (rxp.test(this[1])) {
            optlist.append($('<option/>').attr('value', this[0]).text(this[1]));
        } else{
            optlist.append($('<option/>').attr('value', this[0]).text(this[1]).addClass("hidden"));
        }
    });
    $(".hidden").toggleOption(false);
    

    Here 是对 toggleOption 实现的引用。

    Demo

    【讨论】:

    • 它工作得很好。多谢。多亏了你,我的工作现在已经完成了。
    • Kazurin:为每个列表添加两个搜索框怎么样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    相关资源
    最近更新 更多