如何通过select2设置值重置的占位符 . 在我的示例中,如果单击位置或等级选择框,并且我的select2的值大于select2应重置的值并显示默认占位符 . 此脚本正在重置值,但不会显示占位符
$("#locations, #grade ").change(function() {
$('#e6').select2('data', {
placeholder: "Studiengang wählen",
id: null,
text: ''
});
});
$("#e6").select2({
placeholder: "Studiengang wählen",
width: 'resolve',
id: function(e) {
return e.subject;
},
minimumInputLength: 2,
ajax: {
url: "index.php?option=com_unis&task=search.locator&tmpl=component&<?php echo JSession::getFormToken() ?>=1",
dataType: 'json',
data: function(term, page) {
return {
q: term, // search term
g: $('#grade option:selected').val(),
o: $('#locations option:selected').val()
};
},
results: function(data, page) {
return {
results: data
};
}
},
formatResult: subjectFormatResult,
formatSelection: subjectFormatSelection,
dropdownCssClass: "bigdrop",
escapeMarkup: function(m) {
return m;
}
});
30 回答
我的解决方案是:
我不知道是否有其他人经历过这种情况,但是一旦代码触发了触发器('更改'),我的javascript就停止了,从未返回触发器,其余的功能从未执行过 .
我对jquerys触发器不太熟悉,说这不是预期的 . 我通过将它包装在setTimeout中来解决它,丑陋但有效 .
在使用此选项清除值之前
$("#customers_select").select2("val", "");
尝试将焦点设置为重置时的任何其他控件单击 .这将再次显示占位符 .
好吧,每当我这样做
经过三到四次触发后,我开始陷入某种迟滞 . 我想有一个内存泄漏 . 它不在我的代码中,因为如果我删除这一行,我的应用程序是滞后的 .
由于我将allowClear选项设置为true,因此我选择了
接下来是$('myselectdropdown') . select2('close'); select2 dom元素上的事件触发器,以防您想要关闭打开的建议下拉列表 .
Select2更改了他们的API:
现在最好的方法是:
Edit: December 2016 评论表明以下是更新的方法:
对我来说唯一可行的是:
我使用的是4.0.3版
Reference
According to Select2 Documentation
您必须将select2定义为
要重置select2
使用select2版本3.2这对我有用:
不需要实现
initSelection
在这里尝试了前10个解决方案并且失败后,我发现this解决方案正常工作(请参阅页面上的"nilov commented on Apr 7 • edited"评论):
然后进行更改:
(作者最初显示
var $select = $(this[1]);
,评论者更正了var $select = $(this[0]);
,我在上面说明了这一点 . )将此代码用于您的js文件
对于占位符
要重置选择2
希望这可以帮助
为了重置值和占位符,我只需重新启动select2元素:
我也有这个问题,它源于
val(null).trigger("change");
在占位符重置之前抛出No select2/compat/inputData
错误 . 我通过捕获错误并直接设置占位符(以及宽度)来解决它 . 注意:如果您有多个,则需要捕获每个 .我正在运行Select2 4.0.3
DOM接口已经跟踪了初始状态......
所以做以下就足够了:
Select2使用特定的CSS类,因此重置它的简单方法是:
如果您在同一个表单中有多个Select2,那么您将拥有优势,所有这些都将使用此单个命令重置 .
这是正确的方法:
我正在使用Select2的最新版本 .
一种[非常] hacky方式(我看到它适用于4.0.3版本):
allowClear必须设置为true
select元素中必须存在一个空选项
对于加载远程数据的用户,this会将select2重置为占位符而不会触发ajax . 适用于v4.0.3:
我尝试了上述解决方案,但它对我不起作用 .
这是一种破解,你不必触发改变 .
要么
从v.4.0.x开始......
清除值,还要恢复占位符的使用...
如果它是空的,它将选择第一个选项而不是你想要的
坦率地说...... Select2在屁股上是如此的痛苦,令我惊讶的是它还没有被取代 .
您可以清除选择
但它不会让你回到你的占位符 .
所以它的一半解决方案
首先,你必须像这样定义select2:
要重置select2,只需使用以下代码块:
用这个 :
使用以下命令配置select2
并以编程方式清除选择输入
我尝试了上述解决方案,但没有使用版本4x .
我想要实现的是:清除所有选项但不要触摸占位符 . 这段代码适合我 .
我知道这是一个老问题,但这适用于select2版本4.0
要么
如果你有绑定的变化事件
其中0是下拉列表的第一个值
接受的答案在我的案例中不起作用 . 我正在尝试这个,它正在工作:
定义select2:
要么
至重启:
要么
TO REMOVE SELECTED VALUE
TO CLEAR OPTION VALUES
遵循 recommended 的方式 . 在文档https://select2.github.io/options.html#my-first-option-is-being-displayed-instead-of-my-placeholder中找到(这似乎是一个相当普遍的问题):
发生这种情况时,通常意味着您没有空白的
<option></option>
作为<select>
中的第一个选项 .如: