在下拉重置选择二值和复位按钮(Resetting Select2 value in dropdown

2019-07-20 23:04发布

什么是重置所选项目到默认的最佳方式? 我使用的是选择二库,并使用时,一个普通按钮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:

我看到三个问题:

  1. 当其值是由于形式复位改变不刷新选择二控制的显示。
  2. “全部”选项不具有value属性。
  3. “全部”选项被禁用。

首先,我建议你使用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:我个人觉得重新上电复位,以及触发blurfocus原隶属选择的事件,是一些最引人注目的“丢失”的特征,选择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