什么是重置所选项目到默认的最佳方式? 我使用的是选择二库,并使用时,一个普通按钮type="reset"
,在下拉列表中的值不复位。
所以,当我按下按钮,我想“所有”来再次显示。
jQuery的
$("#d").select2();
HTML
<select id="d" name="d">
<option selected disabled>All</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Answer 1:
我想尝试这样的事:
$(function(){
$("#searchclear").click(function(){
$("#d").select2('val', 'All');
});
});
Answer 2:
您还可以使用重置选择2值
$(function() {
$('#d').select2('data', null)
})
另外你可以通过'allowClear': true
调用选择2时,它将有一个X按钮复位它的价值。
Answer 3:
根据记录的最新版本(3.4.5选择2) 在这里 ,这将是简单的:
$("#my_select").select2("val", "");
Answer 4:
4.0版
$('#d').val('').trigger('change');
这是从现在开始正确的解决方案上,根据调试模式抛出过时消息:“ select2("val")
方法已被弃用,将被删除在以后的版本中选择二使用$element.val()
代替”
Answer 5:
你可以使用:
$("#d").val(null).trigger("change");
这是非常简单而努力吧! 如果有复位按钮使用:
$('#btnReset').click(function() {
$("#d").val(null).trigger("change");
});
Answer 6:
这样做的最好的办法是:
$('#e1.select2-offscreen').empty(); //#e1 : select 2 ID
$('#e1').append(new Option()); // to add the placeholder and the allow clear
Answer 7:
我看到三个问题:
- 当其值是由于形式复位改变不刷新选择二控制的显示。
- “全部”选项不具有
value
属性。 - “全部”选项被禁用。
首先,我建议你使用setTimeout
功能,以确保被执行的代码的形式完成恢复后。
单击该按钮时,您可以执行的代码:
$('#searchclear').click(function() {
setTimeout(function() {
// Code goes here.
}, 0);
});
或者当表单被重置:
$('form').on('reset', function() {
setTimeout(function() {
// Code goes here.
}, 0);
});
至于用什么样的代码:
由于“全部”选项被禁用,形式复位不会使选定的值。 因此,必须明确将其设置为选择的值。 做到这一点的方法是使用选择二“VAL”功能。 而且,由于“全部”选项不具有value
属性,其价值是一样的文字,这是“全部”。 因此,你应该使用在所选择的答案被thtsigma给出的代码:
$("#d").select2('val', 'All');
如果属性value=""
将被添加到“全部”选项,那么你可以使用由丹尼尔·德纳给出的代码:
$("#d").select2('val', '');
如果“全部”选项被禁用没有,那么你只需要强制选择二刷新,在这种情况下,你可以使用:
$('#d').change();
注:Lenart下面的代码是一个方法来清除选择,但它不会导致被选择的“全部”选项:
$('#d').select2('data', null)
Answer 8:
如果你有一个选择填充部件,例如:
<select>
<option value="1">one</option>
<option value="2" selected="selected">two</option>
<option value="3">three</option>
...
你会想说服选择2,恢复上电复位最初选定的值,类似于天然形式是如何工作的。 为了实现这一目标,首先重置原始形式,然后更新选择2:
$('button[type="reset"]').click(function(event) {
// Make sure we reset the native form first
event.preventDefault();
$(this).closest('form').get(0).reset();
// And then update select2 to match
$('#d').select2('val', $('#d').find(':selected').val());
}
Answer 9:
我发现效果很好如下:
如果你有一个像“所有”或“ - 选择 - ”,其第一个选项的占位符选项,这就是要设置的值,当你“复位”你可以使用
$('#id').select2('val',0);
0实质上是要将其设置为复位选项。 如果你想将其设置为最后一个选项,然后获取一个选项的长度,并设置该长度 - 1,基本上是用你想设置的选择2值复位任何选项的索引。
如果你没有一个占位符,只是想没有文本出现在现场使用:
$('#id').select2('val','');
Answer 10:
为了实现一个通用的解决方案,为什么不这样做:
$(':reset').live('click', function(){
var $r = $(this);
setTimeout(function(){
$r.closest('form').find('.select2-offscreen').trigger('change');
}, 10);
});
是这样的:你没有作出一个新的逻辑,你的应用程序的每个选择2。
而且,你不必知道的默认值(这,顺便说一下,并不一定是""
,甚至第一个选项)
最后,将该值设置为:selected
并不总是实现了真正的复位,因为选择很可能已在客户端上编程设置,而默认操作当前form select
是输入元素的值返回到服务器,发送者。
编辑:另外,考虑弃用的状态live
,我们可以用这个代替第一行:
$('form:has(:reset)').on('click', ':reset', function(){
或者更好的是:
$('form:has(:reset)').on('reset', function(){
PS:我个人觉得重新上电复位,以及触发blur
和focus
原隶属选择的事件,是一些最引人注目的“丢失”的特征,选择2!
Answer 11:
选择二使用特定CSS类,所以一个简单的方法来重置是:
$('.select2-container').select2('val', '');
而你有,如果你在相同的形式有多种选择二的优势,他们都将与此单个命令复位。
Answer 12:
有时候我想重置选择二,但我不能没有变化()方法。 所以我的解决办法是:
function resetSelect2Wrapper(el, value){
$(el).val(value);
$(el).select2({
minimumResultsForSearch: -1,
language: "fr"
});
}
使用:
resetSelect2Wrapper("#mySelectId", "myValue");
Answer 13:
对我来说,它仅适用于这些解决方案
$(this).select2('val', null);
要么
$(this).select2('val', '');
Answer 14:
// Store default values
$('#filter_form [data-plugin="select2"]').each(function(i, el){
$(el).data("seldefault", $(el).find(":selected").val());
});
// Reset button action
$('#formresetbtn').on('click', function() {
$('#filter_form [data-plugin="select2"]').each(function(i, el){
$(el).val($(el).data("seldefault")).trigger('change');
});
});
文章来源: Resetting Select2 value in dropdown with reset button