首页 文章

替换select2选项?

提问于
浏览
1

所有,

我有两个选择框:

  • 水果选择

  • FruitQuantity选择

根据Fruit中选择的选项,将影响FruitQuantity的选项 .

所以使用select2,我想简单地通过这样做替换select中的所有选项 .

var options = [];
            $.each(pageData.products[selectedFruit].quantities, function (key, value) {
                options.push({
                    text: value.quantity,
                    id: value.quantity,

                })
            });
            console.log(options.length);
            $quantitySelect.select2( { data : options });

问题是select2只是将新数据附加到已经存在的内容上 . 我希望它清除所有选项并添加新选项 .

否则我的选择框会填满不正确的选项 .

我试过这个问题Clear dropdown using jQuery Select2

$quantitySelect.select2('data', null)

这没什么,但它不清楚 .

帮助我欧比万,你是我唯一的希望 .

3 回答

  • 8

    假设您使用select2 4.0.0和以下类型的HTML:

    <select id="fruits">
        <option value="apple" selected>Apples</option>
        <option value="pear">Pears</option>
    </select>
    <select id="quantities"></select>
    

    您需要在 "#fruits" 控件上侦听 "change" 事件,并且每次更改时,您都需要使用相关数据重新填充 "#quantities" 下拉列表 .

    这是它的样子:

    var initQuantitiesDropdown = function () {
        var options = [];
        var selectedFruit = $("#fruits").val();
        $.each(pageData.products[selectedFruit].quantities, function (key, value) {
            options.push({
                text: value,
                id: key
            });
        })
        $("#quantities").empty().select2({
            data: options
        });
    };
    
    $("#fruits").select2().change(initQuantitiesDropdown);
    initQuantitiesDropdown();
    

    你可以在这个JSFiddle中看到这个

  • 2

    首先清空列表然后再次重新初始化它

    $quantitySelect.empty().select2();
    

    https://jsfiddle.net/qum29ken/

  • 0

    试试这个 $quantitySelect.val(null).trigger("change"); 假设你已经初始化了select2 .

    参考 - https://select2.github.io/examples.html#programmatic

相关问题