Jquery 重置select2值并显示占位符

Jquery 重置select2值并显示占位符,jquery,twitter-bootstrap,jquery-select2,Jquery,Twitter Bootstrap,Jquery Select2,如何通过选择2在值重置时设置占位符。在我的示例中,如果单击位置或坡度选择框,并且我的select2的值大于select2的值,则应重置并显示默认占位符。此脚本正在重置值,但不会显示占位符 $("#locations, #grade ").change(function() { $('#e6').select2('data', { placeholder: "Studiengang wählen", id: null, text: '' }); });

如何通过选择2在值重置时设置占位符。在我的示例中,如果单击位置或坡度选择框,并且我的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;
   }
});
$(“#位置,#等级”).change(函数(){
$('#e6')。选择2('数据'{
占位符:“Studiengang wählen”,
id:null,
文本:“”
});
});
$(“#e6”)。选择2({
占位符:“Studiengang wählen”,
宽度:'解析',
id:功能(e){
返回e.subject;
},
最小输入长度:2,
阿贾克斯:{
url:“index.php?option=com\u unis&task=search.locator&tmpl=component&=1”,
数据类型:“json”,
数据:功能(术语,第页){
返回{
q:term,//搜索术语
g:$(“#等级选项:选定”).val(),
o:$(“#位置选项:选定”).val()
};
},
结果:功能(数据、页面){
返回{
结果:数据
};
}
},
formatResult:subjectFormatResult,
formatSelection:subjectFormatSelection,
dropdownCssClass:“大滴”,
逃逸标记:功能(m){
返回m;
}
});

您必须将select2定义为

$("#customers_select").select2({
    placeholder: "Select a customer",
    initSelection: function(element, callback) {                   
    }
});
要重新设置设置,请选择2

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

Select2使用特定的CSS类,因此重置它的简单方法是:

$('.select2-container').select2('val', '');

如果您在同一表单中有多个Select2,则可以使用此命令重置所有Select2。

Select2已更改其API:

Select2:Select2(“val”)方法已被弃用 并将在以后的Select2版本中删除。改为使用$element.val()

现在最好的方法是:

$('#your_select_input').val('');
编辑:2016年12月评论建议以下是更新的方法:

$('#your_select_input').val([]);

删除所选值

$('#employee_id').select2('val','');

清除选项值

$('#employee_id').html('');

在使用此
$(“#客户_选择”)清除值之前,请选择2(“val”,”)
尝试在“重置”单击时将焦点设置为任何其他控件


这将再次显示占位符。

接受的答案在我的情况下不起作用。我正在尝试这个,它正在发挥作用:

定义选择2:

$("#customers_select").select2({
    placeholder: "Select a State",
    allowClear: true
});

要重置:

$("#customers_select").val('').trigger('change')


按照推荐的方法进行操作。可在文档中找到(这似乎是一个相当常见的问题):

发生这种情况时,通常意味着您的
中没有空白的
作为第一个选项

例如:

<select>
   <option></option>
   <option value="foo">your option 1</option>
   <option value="bar">your option 2</option>
   <option value="etc">...</option>
</select>

你的选择1
你的选择2
...

DOM接口已跟踪初始状态

因此,执行以下操作就足够了:

$("#reset").on("click", function () {
    $('#my_select option').prop('selected', function() {
        return this.defaultSelected;
    });
});
不管我什么时候

$('myselectdropdown').select2('val', '').trigger('change');
在三到四次触发后,我开始有点迟滞。我想是内存泄漏了。它不在我的代码中,因为如果我删除了这一行,我的应用程序是无延迟的

因为我已经将allowClear选项设置为true,所以我选择了

$('.select2-selection__clear').trigger('mousedown');

后面可以是$('myselectdropdown')。选择2('close');select2 dom元素上的事件触发器,以防您要关闭“打开建议”下拉列表。

我也遇到了这个问题,它源于
val(null)。触发器(“更改”)在重置占位符之前抛出
No select2/compat/inputData
错误。我通过捕捉错误并直接设置占位符(以及宽度)解决了这个问题。 注意:如果你有多个,你需要抓住每一个

try{
    $("#sel_item_ID").select2().val(null).trigger("change");
}catch(err){
    console.debug(err)
}
try{
    $("#sel_location_ID").select2().val(null).trigger("change");
}catch(err){
    console.debug(err)
}
$('.select2-search__field')[0].placeholder='All Items';
$('.select2-search__field')[1].placeholder='All Locations';
$('.select2-search__field').width(173);

我正在运行Select2 4.0.3

您可以通过

$('#object').empty();
但它不会让你回到你的占位符


所以这是一个半解决方案

对我来说唯一有效的方法是:

$('select2element').val(null).trigger("change")
我使用的是4.0.3版

参考


我知道这是一个老问题,但这适用于select2 4.0版

 $('#select2-element').val('').trigger('change');


如果您有绑定到它的更改事件

我已经尝试了上述解决方案,但没有一个能与版本4x一起工作

我想要实现的是:清除所有选项,但不要触摸占位符。这个代码对我有用

selector.find('option:not(:first)').remove().trigger('change');

我尝试了以上的解决方案,但对我无效

这是一种黑客,你不必触发改变

$("select").select2('destroy').val("").select2();


使用select2 3.2版,这对我很有用:

$('#select2').select2("data", "");
从v.4.0.x开始,不需要实现
initSelection

若要清除值,但同时恢复占位符,请使用

.html('<option></option>');  // defaults to placeholder

坦率地说,Select2是一个令人讨厌的东西,它竟然没有被取代,这让我感到惊讶。

首先,你必须这样定义Select2:

$('#id').select2({
    placeholder: "Select groups...",
    allowClear: true,
    width: '100%',
})
要重置select2,只需使用以下代码块:

$("#id > option").removeAttr("selected");
$("#id").trigger("change");

在这里尝试了前10个解决方案但失败后,我找到了可行的解决方案(请参阅“nilov在4月7日发表评论•编辑”评论):


(作者最初显示了
var$select=$(此[1]);
,评论员将其更正为
var$select=$(此[0]);
,我在上面显示。)

对于加载远程数据的用户,将在不触发ajax的情况下将select2重置为占位符。适用于v4.0.3:

$("#lstProducts").val("").trigger("change.select2");

使用以下命令配置select2

    $('#selectelementid').select2({
        placeholder: "Please select an agent",
        allowClear: true // This is for clear get the clear button if wanted 
    });
和以编程方式清除“选择输入”

    $("#selectelementid").val("").trigger("change");
    $("#selectelementid").trigger("change");
使用以下命令:

$('.select').val([]).trigger('change');

其中0是下拉列表的第一个值,这是正确的方法:

 $("#customers_select").val('').trigger('change');
我正在使用Select2的最新版本。

作为占位符

$("#stateID").select2({
    placeholder: "Select a State"
});
要重置一个选项,请选择2

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

希望这有助于在js文件中使用此代码

$('#id').val('1');
$('#id').trigger('change');

对于Select2 4.0.9版,这对我很有用:

$( "#myselect2" ).val('').trigger('change');

所以,要重置表单,你们中的一些人将有一个重置按钮。 在脚本标记中添加以下代码

$('.your_btn_class').click(function(){
    $('#select_field_id').val([]);
    $("#select_field_id").select2({
    placeholder: "this is a placeholder",
    });
});
或者只清空选择字段而不保留占位符:

$('.your_btn_class').click(function(){
    $('#select_field_id').val([]);
 });
从select2网站

$("#mySelect2ControlId").val(null).trigger("change");
这将删除值,对我来说最重要的是,它还将删除 空x按钮

我尝试使用,但得到错误:当连接到元素时,Select2不允许使用选项“initSelection”。这对我不起作用
 $("#customers_select").val('').trigger('change');
$("#stateID").select2({
    placeholder: "Select a State"
});
$('#stateID').val('');
$('#stateID').trigger('change');
$('#id').val('1');
$('#id').trigger('change');
$( "#myselect2" ).val('').trigger('change');
$('.your_btn_class').click(function(){
    $('#select_field_id').val([]);
    $("#select_field_id").select2({
    placeholder: "this is a placeholder",
    });
});
$('.your_btn_class').click(function(){
    $('#select_field_id').val([]);
 });
$("#mySelect2ControlId").val(null).trigger("change");
$("#customers_select").val([]).trigger('change')