如何在使用Jquery的select2()下拉菜单中禁用所选属性?

32

我知道如何启用下拉菜单中的所选属性;我可以使用以下代码:

$('select').select2();

但我的问题是如何禁用它?谢谢点击这里


2
这是一个 JQuery 插件。 - Attila Naghi
12个回答

60

在 Select2 3.x 版本中的正确使用方法为:

$('select').select2("enable", false)

这个很好用。


47

对于使用 Select2 4.x 的用户,您可以通过以下方式禁用单个选项:

$('select option:selected').prop('disabled', true);

对于使用 Select2 4.x 的用户,您可以使用以下方法禁用整个下拉列表:

$('select').prop('disabled', true);

我编辑了我的帖子,请参考图片。这种方法不起作用。我认为select2有一个特定的函数可以做到这一点,但是我对此还很陌生。 - Attila Naghi
我尝试了这个版本:$('select option:selected').attr('disabled','true'); - Attila Naghi
我有点困惑,你是想禁用 select 元素还是 select 中的一个选项?如果是 select 元素,请尝试使用:$('select').select2().enable(false); - robert
$('#subTasks').select2().enable(false) => 我想写这个代码,但是它会完全禁用它,即使我想为任务、子任务选择另一个值,它仍然被禁用。我不知道你是否理解我的意思:D - Attila Naghi
在这种情况下,您必须根据任务选择元素中的选择来控制禁用/启用操作。请记住,您可以通过执行以下操作重新启用子任务:$('#subTasks').select2().enable(true)。 - robert
显示剩余4条评论

18
以下代码对于Select2 3.x版本也有效。
启用选择框:
$('#foo').select2('enable');

禁用选择框:

$('#foo').select2('disable');

jsfiddle: http://jsfiddle.net/DcunN/


2
禁用:在我的情况下,它是$('#foo').select2('enable', false); - Yahya
1
$('#foo').select2('disable');不再起作用了。 - elki42

9

要禁用完整的select2框,即不删除已选择的值,也不插入新值,请使用以下命令:

$("id-select2").prop("disabled", true);

其中id-select2是select2的唯一标识符。如果定义了任何特定的类来处理下拉菜单,也可以使用该类。


8
select2 网站 上,您可以看到有关选项的信息。API 中有一个“disabled”选项,您可以像这样使用它:
$('#foo').select2({
    disabled: true
});

5

从Select2 4.1版本开始,他们已经移除了对.enable的支持。

$("select").prop("disabled", true); // instead of $("select").enable(false);

来源:https://select2.org/upgrading/migrating-from-35

这篇文章介绍了从Select2版本3.5升级到最新版本的步骤和注意事项。

首先,需要将所有Select2的CSS和JavaScript文件更新到最新版本。然后,检查现有代码并对其进行必要的更改以适应Select2的新版本。例如,一些API函数名称已更改,事件回调也有所不同。

此外,新版本中还有一些新特性和选项可供使用,如下拉框的自定义模板和搜索功能的增强。这些功能可以提高用户体验。

总之,在升级之前,请确保备份您的代码,并仔细阅读Select2文档中关于迁移的指南。


3
根据select2文档:点击此处 如果您想禁用select2,则可以采用以下方法:
$(".js-example-disabled").prop("disabled", true);

如果您想启用一个被禁用的Select2框,请使用以下方法:
$(".js-example-disabled").prop("disabled", false);

3

我用以下方式禁用select2:

$('select').select2("enable",false);

并启用它

$('select').select2("enable");

3
由于问题似乎不太清楚,如果这个答案与原意不直接相关,我很抱歉。
对于使用Select2版本4+的用户,根据官方插件文档,.select2("enable")不再是禁用选择框(其任何一个选项)的方式。在版本4.1及以后的版本中,该方法甚至将被完全删除。
直接引用文档内容(参见https://select2.org/upgrading/migrating-from-35#select2-enable):

Select2将尊重底层选择元素的disabled属性。为了启用或禁用Select2,您应该在 元素上调用.prop('disabled', true/false)。旧方法的支持将在Select2 4.1中完全删除。

因此,在先前答案的示例中,应该是: $('select').prop(disabled,true);

1
$('select').select2('enable',false);

这对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接