admin管理员组文章数量:1134246
I'm working with the awesome select2 control.
I'm trying to clean and disable the select2 with the content too so I do this:
$("#select2id").empty();
$("#select2id").select2("disable");
Ok, it works, but if i had a value selected all the items are removed, the control is disabled, but the selected value is still displayed. I want to clear all content so the placeholder would be showed. Here is a example I did where you can see the issue: /
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>
Code:
$(document).ready(function () {
$("#sel").select2();
$("#pres").click(function () {
$("#sel").empty();
$("#sel").select2("disable");
});
$("#ena").click(function () {
$("#sel").select2("enable");
});
});
CSS:
#sel {
margin: 20px;
}
Do you have any idea or advice to this?
I'm working with the awesome select2 control.
I'm trying to clean and disable the select2 with the content too so I do this:
$("#select2id").empty();
$("#select2id").select2("disable");
Ok, it works, but if i had a value selected all the items are removed, the control is disabled, but the selected value is still displayed. I want to clear all content so the placeholder would be showed. Here is a example I did where you can see the issue: 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>
Code:
$(document).ready(function () {
$("#sel").select2();
$("#pres").click(function () {
$("#sel").empty();
$("#sel").select2("disable");
});
$("#ena").click(function () {
$("#sel").select2("enable");
});
});
CSS:
#sel {
margin: 20px;
}
Do you have any idea or advice to this?
Share Improve this question edited Mar 1, 2018 at 20:23 Igor De Oliveira Sá 6245 silver badges7 bronze badges asked Apr 30, 2013 at 23:31 mllamazaresmllamazares 8,16619 gold badges67 silver badges94 bronze badges 1- Title is missleading. Please change for future readers. – ManuelSchneid3r Commented May 19, 2017 at 8:26
11 Answers
Reset to default 112Whenever you alter or change a value in select2 try to use the trigger ("change")
:
$('#sel').empty().trigger("change");
Try this from official select2 documentations.
version 4
$("#sel").val(null).trigger("change");
For version 3.5.3
$("#sel").select2("val", "");
Why all this trouble???
use:
$('#sel').select2('data', null);
To clean completely a select2
(>= v4) component:
$('#sel').val(null).empty().select2('destroy')
- val(null) -> remove
select
form data - empty -> remove
select
options - select2(destroy) -> remove
select2
plugin
Then you can create a new select2
component with the same select HTML node if you want.
I'm using Select2 v4.0 (4.0.6-rc.0)
Using the following clears all of the values in the dropdown field:
$('#id_of_select2_select').empty();
Doing this removes them entirely and they cannot be re-selected until the page refreshes.
If all you want to do is remove the selection, do the following:
$('#id_of_select2_select').val(null).trigger('change');
The currently selected options are cleared and the user will be able to re-select their intended options.
As answered Sarath Kumar:
$('#sel').val(null).trigger('change');
Reference from the official documentation, here is the link:
https://select2.org/programmatic-control/add-select-clear-items#clearing-selections
Try this:- 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");
});
});
Note
$('#s2id_sel > a > span').text($(sel).data('placeholder')); What i understand looking at this plugin is the markup it creates from the select that we provide it generates id as #s2id_ + "yourselectelementid". So this would be a better way to use it in case you have multiple select controls and you want to disable only the some or one of them.
If you want to clear the select contents:- http://jsfiddle.net/G7TXj/
I tested this code and got the answer:
$('#sel').val(null).empty().select2();
My select2 in first option to "all". This option clears the other options and the first option is selected
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);
}
As per the doc here, you need to use the code as below
$('#mySelect2').val(null).trigger('change');
try using this:
$('#sel').html('').select2();
本文标签: javascriptHow to clean completely select2 controlStack Overflow
版权声明:本文标题:javascript - How to clean completely select2 control? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736851450a1955525.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论