通过 javascript/jquery 关闭 select2 下拉菜单

Posted

技术标签:

【中文标题】通过 javascript/jquery 关闭 select2 下拉菜单【英文标题】:close select2 dropdown via javascript/jquery 【发布时间】:2014-03-06 01:47:42 【问题描述】:

美好的一天,如何通过 jquery 或 javascript 正确关闭 select2 下拉菜单?

现在我使用select2-dropdown.toggle() 关闭它,

但我注意到它只会隐藏列表,并且 select2 框仍然被突出显示

我想失去焦点或类似的东西,只是为了正确关闭它并能够得出这样的结果。

顺便说一下,屏幕截图很暗,因为那些 select2 框位于引导模式下,每当我按 Enter 时就会出现。

任何建议都将不胜感激!提前致谢

【问题讨论】:

尝试 -> 关注任何其他元素。 感谢@TusharGupta 的建议,但我已经这样做了,我确实在模态框上设置了我的文本框,以便在显示模态框时聚焦。 【参考方案1】:

我知道这是一个老问题,但为了使用 API 执行此操作,您只需执行以下操作:

Select2 API

 $("#select2-drop-mask").select2("close");

该问题还提到了引导模式对话框,这往往是人们希望以编程方式关闭它的原因。

对于任何人的信息,这是您的操作方式:

引导程序 3

$('#myModal').on('hidden.bs.modal', function () 
  $('#select2-drop-mask').select2("close");
)

引导程序 2

$('#myModal').on('hidden', function () 
   $('#select2-drop-mask').select2("close");
)

【讨论】:

【参考方案2】:

在 v4.0 中,没有其他答案对我有用。使用 jQuery 只选择蒙版没有效果。我不得不使用选择框本身的 id:

$("#mySelectElement").select2("close")

这也有效,但可能不是首选:

$("#mySelectElement").select2().trigger("select2:close");

Documentation

另外,对于 Bootstrap 3hidden.bs.modal 事件为时已晚,并且 select2 掩码会在动画期间停留一秒钟。 hide.bs.modal 对我们来说更顺畅一些:

$('#modalYourModal').on('hide.bs.modal', function () 
    //close select2 in case its open
    $("#mySelectElement").select2("close");
);

【讨论】:

【参考方案3】:

这个对我有用$("#select2-drop-mask").click();

【讨论】:

【参考方案4】:

select2-dropdown-*mask* 不适合我,但下面的可以。

$('#select2-drop').select2('close');

【讨论】:

@stevemoretz - 有没有办法按类关闭它们? (无需使用每个 ID) @BeninCA 可能通过使用 $('.id').each(function())$(this).select2('close'); @stevemoretz - 试过这样,但不行:$('.select2').each(function()$(this).select2('close');) 转而发布了一个新问题:***.com/questions/58347627/… @BeninCA 这就是为什么我说这些东西可能有点连贯。尤其是在不同的版本中,您会得到不同的结果。希望新问题会得到很好的最新答案【参考方案5】:

在 Bootstrap 版本 4 及更高版本中关闭所有。试试:

$('body').trigger('mousedown');

【讨论】:

感谢 @Ner $(document.body).trigger('mousedown'); 在 BS4 上为我工作【参考方案6】:
select2-dropdown.blur();

我认为这就是您要寻找的。 Here你刚才在JSFiddle中有一个我刚刚创建的例子。

【讨论】:

感谢@mbecares 的回答,这也是我的想法,我应该使用 blur() 函数,但它仍然无法正常工作。顺便说一句,我使用的是文本框,因为你不能在“select”上使用select2的ajax函数【参考方案7】:

所有 select2 元素都有类 select2-hidden-accessible。所以我们可以在选择器中使用这个类并关闭它们

$('.select2.select2-hidden-accessible').select2('close');

或尝试使用 id 选择器仅关闭其中一个。

【讨论】:

以上是关于通过 javascript/jquery 关闭 select2 下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

Javascript/Jquery - 如果介于之间的数字显示 [关闭]

图像编辑无法使用 PHP 和 Javascript/Jquery [关闭]

从输入值中消除javascript / jquery空间[重复]

在javascript、jquery或vue中制作动态条件[关闭]

如何使用 javascript 或 jquery 仅从字符串中获取所有 HTML 标记? [关闭]

前端javascript+jQuery实现360开机时间显示效果