重置 select2 上的所有选项并加载另一个数据集

Posted

技术标签:

【中文标题】重置 select2 上的所有选项并加载另一个数据集【英文标题】:Reset all options on select2 and load another data set 【发布时间】:2018-10-07 14:01:52 【问题描述】:

我遇到了Jquery Select2 的问题。我想设置一个 select2 选项来更改另一个 select2 选择框。

        var categorySelect = $('#category_select');
        var productSelect = $('#product_select');
        categorySelect.select2();
        productSelect.select2();
        categorySelect.on('change',function () 
            var categoryId = $(this).val();
            var url = "url("/ajax/category/:category/products")";
            url = url.replace(":category",categoryId);
            $.get(url,function (res) 
                var res = [
                    id: 900, text: 'AABB',
                    id: 800, text: 'WWBB',
                ]; // dummy response
                productSelect.select2('data',res);
            )
        )

我在这里关注他们的文档,但不明白为什么再次设置数据没有得到。

【问题讨论】:

也许这会有所帮助:***.com/questions/16480910/… 【参考方案1】:

我以自己的方式解决了这个问题。我正在遍历响应数据数组并为产品选择框创建选项

var categorySelect = $('#category_select');
var productSelect = $('#product_select');
categorySelect.select2();
productSelect.select2();
categorySelect.on('change',function () 
    var categoryId = $(this).val();
    var url = "url("/ajax/category/:category/products")";
    url = url.replace(":category",categoryId);
    $.get(url,function (res) 
        var res = [
            id: 900, text: 'AABB',
            id: 800, text: 'WWBB',
        ];
        if(res.length > 0) 
            productSelect.empty();
            res.forEach(function (prod) 
                var opt = $('<option>', 
                    'value' : prod.id
                ).text(prod.text);
                productSelect.append(opt);
            );
        
    )
);

【讨论】:

以上是关于重置 select2 上的所有选项并加载另一个数据集的主要内容,如果未能解决你的问题,请参考以下文章

如何重置select2中的特定选定选项

Select2 从本地 json 文件加载数据

Typhead 空值应重置另一个选择对象的选项

在选择另一个 select2 下拉列表时重置一个 select2 下拉列表的元素

Aurelia Select2,加载远程数据不加载下一页

select2使用ajax加载数据无法选择任何选项