问题描述

将所选项目重置为默认值的最佳方法是什么?我正在使用 Select2 库,当使用普通按钮 type="reset"时,下拉列表中的值不会重置。

所以当我按下我的按钮时,我想再次显示”All” 。

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>

最佳解决方案

我会尝试这样的:

$(function(){
    $("#searchclear").click(function(){
        $("#d").select2('val', 'All');
    });
});

次佳解决方案

您也可以使用重置 select2 值

$(function() {
  $('#d').select2('data', null)
})

或者,当调用 select2 时,您可以传递'allowClear': true,并且将有一个 X 按钮重置其值。

第三种解决方案

根据最新版本 (select2 3.4.5) 记录的 here,它将简单如下:

 $("#my_select").select2("val", "");

第四种方案

你可以使用:

$("#d").val(null).trigger("change");

这很简单,工作正常!如果使用复位按钮:

$('#btnReset').click(function() {
    $("#d").val(null).trigger("change");
});

第五种方案

版本 4.0

$('#d').val('').trigger('change');

这是从现在开始的正确的解决方案,根据弃用在调试模式下的消息:「select2("val")方法已被弃用,将在以后的 Select2 版本中删除,使用 $element.val()

第六种方案

最好的做法是:

$('#e1.select2-offscreen').empty(); //#e1 : select 2 ID
$('#e1').append(new Option()); // to add the placeholder and the allow clear

第七种方案

如果您有一个填充的选择小工具,例如:

<select>
    <option value="1">one</option>
    <option value="2" selected="selected">two</option>
    <option value="3">three</option>
    ...

您将想要说服 select2 在重置时恢复原始选择的值,类似于本机表单的工作原理。要实现这一点,首先重新设置本机窗体然后更新 select2:

$('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());
}

第八种方案

我看到三个问题:

  1. 当它的值由于表单复位而改变时,Select2 控件的显示不会刷新。

  2. “All” 选项没有 value 属性。

  3. “All” 选项被禁用。

首先,我建议您使用 setTimeout 函数确保代码在表单重置完成后执行。

您可以在点击按钮时执行代码:

$('#searchclear').click(function() {
    setTimeout(function() {
        // Code goes here.
    }, 0);
});

或者当表单重置时:

$('form').on('reset', function() {
    setTimeout(function() {
        // Code goes here.
    }, 0);
});

至于要使用的代码:

由于”All” 选项被禁用,表单重置不会使其成为所选值。因此,您必须显式地将其设置为所选值。这样做的方法是使用 Select2 “val” 功能。而且由于”All” 选项不具有 value 属性,因此其值与其文本相同,即”All” 。因此,您应该在选择的答案中使用由 thtsigma 提供的代码:

$("#d").select2('val', 'All');

如果将属性 value=""添加到”All” 选项,那么可以使用 Daniel Dener 给出的代码:

$("#d").select2('val', '');

如果”All” 选项没有被禁用,那么你只需要强制 Select2 刷新,在这种情况下你可以使用:

$('#d').change();

注意:Lenart 的以下代码是清除选择的一种方法,但不会导致选择”All” 选项:

$('#d').select2('data', null)

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛