Javascript 如何完全清洁select2控件?

Javascript 如何完全清洁select2控件?,javascript,jquery,jquery-ui,jquery-select2,Javascript,Jquery,Jquery Ui,Jquery Select2,我在和很棒的人一起工作 我正在尝试清理并禁用包含内容的select2,因此我执行以下操作: $("#select2id").empty(); $("#select2id").select2("disable"); 好的,它可以工作,但是如果我选择了一个值,所有项目都将被删除,控件将被禁用,但所选的值仍会显示。我想清除所有内容,以便显示占位符。下面是我做的一个例子,您可以看到问题: HTML: CSS: 你对此有什么想法或建议吗?试试这个:- 注 $'s2id_sel>a>span'.text$

我在和很棒的人一起工作

我正在尝试清理并禁用包含内容的select2,因此我执行以下操作:

$("#select2id").empty();
$("#select2id").select2("disable");
好的,它可以工作,但是如果我选择了一个值,所有项目都将被删除,控件将被禁用,但所选的值仍会显示。我想清除所有内容,以便显示占位符。下面是我做的一个例子,您可以看到问题:

HTML:

CSS:

你对此有什么想法或建议吗?

试试这个:-

$'s2id_sel>a>span'.text$sel.data'placeholder';我对这个插件的理解是它从我们提供的select创建的标记,它生成的id为s2id\uuu+yourselectelementid。因此,如果您有多个select控件,并且只想禁用其中的一些或一个,那么这将是一种更好的使用方法


如果要清除所选内容:-

为什么会出现这些问题

使用:


从官方的select2文档中试试这个

版本4

对于版本3.5.3


无论何时更改select2中的值,请尝试使用触发器更改:


我的选择2在第一个选项全部。此选项清除其他选项,并选择第一个选项

var $eventSelect = $("#storeList");
   $("#storeList").on("change", function (e) {
        if (e.added != undefined) {
            if (e.added.id == 0 && e.val.length>1) {
                   removeTags();
                $("#storeList").val('0').select2();

            }

        }

    });

  function removeTags(){
        $eventSelect.select2('data', null);

    }

正如Sarath Kumar所回答的:

$('#sel').val(null).trigger('change');
参考官方文件,以下是链接:


我正在使用select2v4.040.6-rc.0

使用以下选项可清除下拉字段中的所有值:

$('#id_of_select2_select').empty();
这样做会完全删除它们,并且在页面刷新之前无法重新选择它们

如果您只想删除所选内容,请执行以下操作:

$('#id_of_select2_select').val(null).trigger('change');
当前选择的选项将被清除,用户将能够重新选择他们想要的选项。

尝试使用以下方法:

$('#sel').html('').select2();
要完全清洁select2>=v4组件,请执行以下操作:

$('#sel').val(null).empty().select2('destroy')
valnull->删除选择表单数据 清空->删除选择选项 选择2destroy->删除select2插件 然后,如果需要,您可以使用相同的select HTML节点创建一个新的select2组件。

根据文档,您需要使用以下代码

$('#mySelect2').val(null).trigger('change');


它应该可以工作,除非您需要删除此行$sel.empty;我现在已经把两个版本都放进去了。。他说的“清除”可能是指清除选择。谢谢你指出真的谢谢你们!是的,我也想清除内容,如果我没有具体说明,很抱歉…@Joëlle请查看我的更新,看看它在您的情况下是否有意义。好的,就这样!再次感谢。顺便说一句,你能给我举一个小例子吗?做同样的事情,但同时用它的id.OMG删除三个select2,就是这样!以上这些都不适合我。我想,这个解决方案是为Select2 V4设计的,但对我来说并不适用。看起来它所改变的只是选择框的大小。它现在是超窄的一个字符wide@jonlink请检查您的select2版本。只是为了跟进。我又试了一次,没有编辑任何代码,结果成功了。奇怪,但我会尽我所能。此外,文档甚至说要这样做,所以这一定是某种失火:这种方法已经被弃用,将在Select2 4.1中删除,效果非常好!你是我的天使!它不适用于select2的新实现。Sarath Kumar的答案现在是可行的。如果我必须只保留选中的选项并删除剩余的所有选项,我会怎么做?在Select2 4.0.3上使用empty而不是valuenull对我有效,谢谢!仅供参考:这也会移除占位符,就像一个符咒\标题有误。请为将来的读者更改。我不确定从这个重复的答案中获得了多少价值。只是在官方文档中添加了缺少的参考。谢谢你的反馈。
$('#sel').empty().trigger("change");
var $eventSelect = $("#storeList");
   $("#storeList").on("change", function (e) {
        if (e.added != undefined) {
            if (e.added.id == 0 && e.val.length>1) {
                   removeTags();
                $("#storeList").val('0').select2();

            }

        }

    });

  function removeTags(){
        $eventSelect.select2('data', null);

    }
$('#sel').val(null).trigger('change');
$('#id_of_select2_select').empty();
$('#id_of_select2_select').val(null).trigger('change');
$('#sel').html('').select2();
$('#sel').val(null).empty().select2('destroy')
$('#mySelect2').val(null).trigger('change');