我正在使用令人敬畏的select2 control。
我正在尝试使用内容清理和禁用select2,所以我这样做:
$("#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 :(得分:33)
每当您更改或更改select2中的值时,请尝试使用触发器(“更改”)
$('#sel').empty().trigger("change");
答案 1 :(得分:30)
为什么这一切都麻烦???
使用:
$('#sel').select2('data', null);
答案 2 :(得分:25)
从官方的select2文档中试试这个。
版本 4
$("#sel").val(null).trigger("change");
版本 3.5.3
$("#sel").select2("val", "");
答案 3 :(得分:4)
我正在使用Select2 v4.0(4.0.6-rc.0)
使用以下内容清除下拉字段中的所有值:
$('#id_of_select2_select').empty();
这样做会完全删除它们,直到页面刷新后才能重新选择它们。
如果您只想删除选择,请执行以下操作:
$('#id_of_select2_select').val(null).trigger('change');
当前选择的选项被清除,用户将能够重新选择其预期的选项。
答案 4 :(得分: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&gt; a&gt; span')。text($(sel).data('placeholder'));我理解看这个插件的是它从我们提供的select创建的标记,它生成id为#s2id_ +“yourselectelementid”。因此,如果您有多个选择控件并且只想禁用其中的一些或一个,这将是一种更好的使用方式。
如果要清除选择内容: - http://jsfiddle.net/G7TXj/
答案 5 :(得分:0)
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);
}
答案 6 :(得分:0)
尝试使用:
$('#sel').html('').select2();
答案 7 :(得分:0)
要彻底清洁select2
(> = v4)组件,
$('#sel').val(null).empty().select2('destroy')
select
表单数据select
个选项select2
插件然后,您可以根据需要创建具有相同选择HTML节点的新select2
组件。
答案 8 :(得分:0)
根据文档here,您需要使用以下代码
$('#mySelect2').val(null).trigger('change');