如何通过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;
}
});
答案 0 :(得分:212)
您必须将select2定义为
$("#customers_select").select2({
placeholder: "Select a customer",
initSelection: function(element, callback) {
}
});
重置select2
$("#customers_select").select2("val", "");
答案 1 :(得分:110)
Select2已更改其API:
Select2:不推荐使用
select2("val")
方法 并将在以后的Select2版本中删除。改为使用$ element.val()。
现在最好的方法是:
$('#your_select_input').val('');
编辑:2016年12月评论建议以下是更新后的方法:
$('#your_select_input').val([]);
答案 2 :(得分:88)
接受的答案在我的案例中不起作用。我正在尝试这个,它正在发挥作用:
定义select2:
$("#customers_select").select2({
placeholder: "Select a State",
allowClear: true
});
或
$("#customers_select").select2({
placeholder: "Select a State"
});
要重置:
$("#customers_select").val('').trigger('change')
或
$("#customers_select").empty().trigger('change')
答案 3 :(得分:36)
对我来说唯一可行的是:
$('select2element').val(null).trigger("change")
我正在使用版本4.0.3
<强>参考强>
答案 4 :(得分:15)
Select2使用特定的CSS类,因此重置它的简便方法是:
$('.select2-container').select2('val', '');
如果您在同一表单中有多个Select2,那么您的优势在于,所有这些都将使用此单个命令重置。
答案 5 :(得分:14)
使用此:
$('.select').val([]).trigger('change');
答案 6 :(得分:10)
删除所选值
$('#employee_id').select2('val','');
清除期权价值
$('#employee_id').html('');
答案 7 :(得分:9)
对于Select2版本4.0.9,这对我有效:
$( "#myselect2" ).val('').trigger('change');
答案 8 :(得分:7)
我知道这是一个老问题,但这适用于select2版本4.0
$('#select2-element').val('').trigger('change');
或
$('#select2-element').val('').trigger('change.select2');
如果您有绑定的更改事件
答案 9 :(得分:5)
首先,你必须像这样定义select2:
$('#id').select2({
placeholder: "Select groups...",
allowClear: true,
width: '100%',
})
要重置select2,只需使用以下代码块:
$("#id > option").removeAttr("selected");
$("#id").trigger("change");
答案 10 :(得分:4)
您可以通过
清除选择$('#object').empty();
但它不会让你回到你的占位符。
所以这是一半的解决方案
答案 11 :(得分:4)
因此,要重置表格,一些人将具有一个重置按钮。 在脚本标记内添加以下代码
$('.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([]);
});
答案 12 :(得分:4)
这是正确的方法:
$("#customers_select").val('').trigger('change');
我使用的是Select2的最新版本。
答案 13 :(得分:4)
使用以下命令配置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");
答案 14 :(得分:3)
我尝试了上述解决方案,但它对我不起作用。
这是一种破解,你不必触发改变。
$(function () {
$(".assign").button().on("click", function () {
$('#passedId').val(this.id);
createDialog();
dialog.dialog("open");
});
});
function createDialog() {
var dialog = $("#dialog-form").dialog({
autoOpen: true,
height: 310,
width: 350,
modal: true
});
}
或
$("select").select2('destroy').val("").select2();
答案 15 :(得分:3)
对于加载远程数据的用户,this会将select2重置为占位符而不会触发ajax。适用于v4.0.3:
$("#lstProducts").val("").trigger("change.select2");
答案 16 :(得分:2)
按照推荐方式执行此操作。在文档https://select2.github.io/options.html#my-first-option-is-being-displayed-instead-of-my-placeholder中找到(这似乎是一个相当普遍的问题):
如果发生这种情况,通常意味着您<option></option>
中的第一个选项没有空白<select>
。
如:
<select>
<option></option>
<option value="foo">your option 1</option>
<option value="bar">your option 2</option>
<option value="etc">...</option>
</select>
答案 17 :(得分:2)
我也遇到了这个问题,它源于val(null).trigger("change");
在占位符重置之前抛出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
答案 18 :(得分:1)
使用select2版本3.2这对我有用:
$('#select2').select2("data", "");
不需要实施initSelection
答案 19 :(得分:1)
我已尝试过以上解决方案,但没有使用版本4x。
我想要实现的是:清除所有选项但不要触摸占位符。这段代码适合我。
selector.find('option:not(:first)').remove().trigger('change');
答案 20 :(得分:1)
$("#customers_select").val([]).trigger('change')
这将删除值,这对我来说最重要-它还删除了 空的x按钮
答案 21 :(得分:1)
从select2网站
$("#mySelect2ControlId").val(null).trigger("change");
答案 22 :(得分:1)
对于占位符
$("#stateID").select2({
placeholder: "Select a State"
});
重置选择2
$('#stateID').val('');
$('#stateID').trigger('change');
希望这有帮助
答案 23 :(得分:1)
v.4.0.x ...
清除值,但还恢复占位符使用...
.html('<option></option>'); // defaults to placeholder
如果它为空,它将选择第一个选项而不是你想要的
.html(''); // defaults to whatever item is first
坦率地说...... Select2在屁股上是如此痛苦,令我惊讶的是它还没有被替换。
答案 24 :(得分:0)
在您的js文件中使用此代码
$('#id').val('1');
$('#id').trigger('change');
答案 25 :(得分:0)
我已阅读所有答案,其中许多答案已被弃用。
这是您目前可以清除和设置占位符值的方式:
// Clear and put a blank select placeholder
$("#MySelect").prop('disabled', false).find("option:gt(0)").remove();
答案 26 :(得分:0)
<label for="RECEIVED_BY" class="control-label"> Received into store By </label>
<label class="pull-right">
<button
type="button"
title="Clear Received into store By"
class="receive_clear clear-button"
aria-label="Select2 options"
>
x
</button></label
>
<select type="text" class="clear_receive_info_by">
<option value="">--Select--</option>
<option value="value1">value1</option>
<option value="value2">value2</option>
<option value="value3">value3</option>
</select>
jQuery:
var $clear_receive_info_by = $(".clear_receive_info_by").select2();
$(".receive_clear").on("click", function () {
$clear_receive_info_by.val(null).trigger("change");
});
答案 27 :(得分:0)
此解决方案对我有用(Select2 4.0.13)
$('#select').on("select2:unselecting", function (e) {
$(this).val('').trigger('change');
e.preventDefault();
});
答案 28 :(得分:0)
使用此$("#customers_select").select2("val", "");
清除值之前
尝试将焦点设置为重置点击时的任何其他控件。
这将再次显示占位符。
答案 29 :(得分:0)
在这种情况下,我这样做:
$('#select').val('');
$('.select2.select2-container').remove();
$('.select2').select2();
答案 30 :(得分:0)
我不知道是否有人遇到过这种情况,但是一旦代码击中了Trigger('change'),我的JavaScript便停止了运行,从未从触发器返回,而其余函数则从未执行。
我对jquery触发器还不够熟悉,无法在预期中做到这一点。我通过将它包装在setTimeout中来解决它,这很丑但是很有效。
答案 31 :(得分:0)
One [very] hacky way to do it (I saw it work for version 4.0.3):
var selection = $("#DelegateId").data("select2").selection;
var evt = document.createEvent("UIEvents");
selection._handleClear(evt);
selection.trigger("toggle", {});
答案 32 :(得分:0)
$('myselectdropdown').select2('val', '0')
其中0是下拉列表的第一个值
答案 33 :(得分:0)
每当我做的时候
$('myselectdropdown').select2('val', '').trigger('change');
在三到四次触发后,我开始出现某种迟滞。我想有一个内存泄漏。它不在我的代码中,因为如果我删除了这一行,我的应用程序是无滞后的。
由于我将allowClear选项设置为true,因此我选择了
$('.select2-selection__clear').trigger('mousedown');
这之后可以是$('myselectdropdown')。select2('close'); select2 dom元素上的事件触发器,以防你想要关闭打开的建议下拉列表。
答案 34 :(得分:0)
我的解决方案是:
$el.off('select2:unselect')
$el.on('select2:unselect', function (event) {
var $option = $('<option value="" selected></option>');
var $selected = $(event.target);
$selected.find('option:selected')
.remove()
.end()
.append($option)
.trigger('change');
});
答案 35 :(得分:0)
在这里尝试了前10个解决方案并失败之后,我发现this解决方案正常工作(参见“nilov于4月7日发表评论•已编辑”评论页面):
(function ($) {
$.fn.refreshDataSelect2 = function (data) {
this.select2('data', data);
// Update options
var $select = $(this[0]);
var options = data.map(function(item) {
return '<option value="' + item.id + '">' + item.text + '</option>';
});
$select.html(options.join('')).change();
};
})(jQuery);
然后进行更改:
var data = [{ id: 1, text: 'some value' }];
$('.js-some-field').refreshDataSelect2(data);
(作者最初显示var $select = $(this[1]);
,评论者更正了var $select = $(this[0]);
,我在上面展示了这一点。)
答案 36 :(得分:0)
DOM接口已经跟踪了初始状态......
所以做以下就足够了:
$("#reset").on("click", function () {
$('#my_select option').prop('selected', function() {
return this.defaultSelected;
});
});
答案 37 :(得分:-1)
为了重置值和占位符,我只需重新启动select2元素:
x:Class="Test.Main.App"