【发布时间】:2012-10-25 18:10:48
【问题描述】:
我正在尝试使用出色的 Select2 库以编程方式清除下拉列表。下拉列表使用 Select2 query 选项动态填充远程 ajax 调用。
HTML:
<input id="remote" type="hidden" data-placeholder="Choose Something" />
Javascript:
var $remote = $('#remote');
$remote.select2({
allowClear: true,
minimumInputLength: 2,
query: function(options){
$.ajax({
dataType: 'json',
url: myURL + options.term,
error: function(jqXHR, textStatus, errorThrown){
smoke.alert(textStatus + ": server returned error on parsing arguments starting with " + options.term);
},
success: function(data, textStatus, jqXHR){
var results = [];
for(var i = 0; i < data.length; ++i){
results.push({id: data[i].id, text: data[i].name});
}
options.callback({results: results, more: false});
}
});
}
});
不幸的是,对$remove.select2('val', '') 的调用会引发以下异常:
Uncaught Error: cannot call val() if initSelection() is not defined
我试过设置attr、设置val、text和Select2特定的data函数。似乎无法让这个人清楚并以单选按钮的方式工作。有人有建议吗?
【问题讨论】:
-
您是否尝试找到元素然后执行
.remove()? -
@EH_warch 我不想删除 Select2 本身,只是清除已设置的值。
-
建议不要删除整个 select2,而是删除元素。也许像
$('.itemSelected').remove()这样的东西?或者你的意思是喜欢$remote.empty()? -
@EH_warch 将删除值本身,或仅删除显示的元素。这里有两个问题,一个是确保它看起来好像我们没有选择一个值,然后确保该值没有设置。我不确定执行您的建议是否不会导致库出现问题或解决问题。会吗?
-
不费吹灰之力地问 JS 问题不是通往幸福的道路。人们不得不做太多繁重的工作来帮助你。
标签: javascript jquery jquery-select2