2013-04-30 55 views
16

我正在使用真棒select2 control如何完全清洁select2控件?

我试图清理和禁用内容选择2太让我这样做:

$("#select2id").empty(); 
$("#select2id").select2("disable"); 

好,它的工作原理,但如果我有一个值来选择所有项目被删除,控制已禁用,但所选值仍显示。我想清除所有内容,以便显示占位符。下面是一个例子,我在哪里可以看到问题:http://jsfiddle.net/BSEXM/

HTML:

<select id="sel" data-placeholder="This is my placeholder"> 
    <option></option> 
    <option value="a">hello</option> 
    <option value="b">all</option> 
    <option value="c">stack</option> 
    <option value="c">overflow</option> 
</select> 
<br> 
<button id="pres">Disable and clear</button> 
<button id="ena">Enable</button> 

代码:

$(document).ready(function() { 
    $("#sel").select2(); 

    $("#pres").click(function() { 
     $("#sel").empty(); 
     $("#sel").select2("disable"); 
    }); 

    $("#ena").click(function() { 
     $("#sel").select2("enable"); 
    }); 
}); 

CSS:

#sel { 
    margin: 20px; 
} 

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

+0

标题有误导性。请为未来的读者改变。 – ManuelSchneid3r 2017-05-19 08:26:01

回答

25

为什么这一切的麻烦???

使用:

$('#sel').select2('data', null); 
+1

Pefect!谢谢! :) – harrison4 2013-10-23 22:47:37

+0

不错,简单.... :) – PSL 2013-10-23 23:17:39

+1

这种方法已被弃用,将被删除在Select2 4.1 – 2016-11-24 18:11:44

1

试试这个: - http://jsfiddle.net/GqbSN/

$(document).ready(function() { 
    $("#sel").select2(); 

    $("#pres").click(function() { 
     $('#s2id_sel > a > span').text($(sel).data('placeholder')); 
     //$('.select2-container > a > span').text('This is my placeholder'); 
     $("#sel").select2("disable");; 
     }); 

    $("#ena").click(function() { 
     $("#sel").select2("enable"); 
    }); 
}); 

注意

$( '#s2id_sel> A>跨度')文本($(SEL)。数据(“占位符。 “));我理解看这个插件是它从我们提供的选择中创建的标记生成id为#s2id_ +“yourselectelementid”。因此,如果您有多个选择控件并且您只想禁用其中的一个或其中一个,那么这将是更好的方式。

如果要清除选择内容: - http://jsfiddle.net/G7TXj/

+1

它应该工作,除了,你需要删除这条线'$(“#sel”)。empty();' – 2013-04-30 23:41:01

+0

他不想清除内容? – PSL 2013-04-30 23:41:50

+0

我已经把这两个版本现在..可能是明确的,他的意思是清除选择。感谢您指出这一点.. :) – PSL 2013-04-30 23:44:08

13

官方选择2单证试试这个。

$("#sel").val(null).trigger("change"); 

注: 这是出于选择2 v4的更新。每当你改变或变更在选择2的值尝试使用触发器(“变”)

+1

OMG,这就是它!以上都不适合我。我想,这个解决方案适用于Select2 v4 – sr9yar 2016-11-24 15:02:21

+0

这个解决方案为我工作。谢谢 – 2017-08-22 12:55:17

15

$('#sel').empty().trigger("change");

+3

在Select2 4.0.3上使用empty()而不是value(null)为我工作,谢谢! – 2017-02-13 10:51:44

+1

使用empty()也适用于我。 $(“#id”)。empty() – 2017-04-09 14:11:08

+0

是的,这也适用于我~~ :​​) – 2017-09-22 08:30:36

0

我在第一个选项为“所有”选择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); 

    }