如何在 select2 中更改占位符

How to change placeholder in select2?

本文关键字:占位符 select2      更新时间:2023-09-26

如何使用 select2 更改数据占位符?

到目前为止,我已经尝试过了。

$("#city").select2({placeholder:"foo"});

而这...

$("#city").attr("data-placeholder","bar");

但两者都不起作用。

我发现如果我只是设置attr,例如 $("#city").attr('data-placeholder', 'bar'),没有效果。但是,如果我设置 attr,然后在没有参数的情况下调用$("#city").select2(),则占位符会更新。

例如

$("#city").attr("data-placeholder","bar");
$("#city").select2();

对于寻找属性解决方案以避免更改JS代码的其他人。我只需要自己为一个项目查找这个,似乎 select2 只需要属性 data-placeholder="。

<select id="city" data-placeholder="my placeholder"></select>

在此处查看更多信息:选择2选项参考

您也可以在模板 (html) 级别执行此操作。只需确保在第一个标签上分配一个空白(例如")字符串即可。

<select id="city" data-placeholder="Select Anything">
  <option value=""></option>
  <option value="option1">Option 1</option>
  <option value="option2">Option 2</option>
</select>

或者我们可以简单地通过 JavaScript 为占位符添加一个数据属性,它应该在 select2 初始化之前发生。

$('#city').data('placeholder','This is a placeholder');

演示

一种更直接的方法..

$('#select2-' + $id + '-container').find('.select2-selection__placeholder').text('Your Text');

其中$id是选择元素的id

更像是一个hack-y解决方案,但不涉及重新启动整个选择元素的解决方案是添加以下扩展:

$.fn.getSelect2Placeholder = function () {
    var $select2Container = $(this).data('select2').$container;
    return $select2Container.find('.select2-selection__placeholder').text();
};
$.fn.setSelect2Placeholder = function (placeholder) {
    var $select2Container = $(this).data('select2').$container;
    return $select2Container.find('.select2-selection__placeholder').text(placeholder);
};

这允许通过简单地编写以下内容来更新占位符:

$('#the-id-of-your-select2-element').setSelect2Placeholder("Your placeholder text.");

将其放入定位器使用的 html 中,如下所示:

<select id="city" placeholder="my placeholder"></select>

对于 select2 版本 4,我在 js init 代码中指定了占位符文本,然后使用 $select.select2{placeholder:"updated text..."} <</p>

div class="answers" 对其进行更新>

可以使用以下脚本:

$("#city").attr('placeholder', 'your text here' );