2013-04-30 93 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); 

    }