我使用带有ajax调用的select2 jQuery插件来检索用户输入的下拉列表中的项目。允许多个选择(标签)并允许自定义选择。当下拉列表出现时,如果我使用光标键转到我想要的项目并按Enter或tab,那么一切正常。触发select2-selecting
回调,并使用选择文本更新输入。
但是,如果我用鼠标单击某个选项,则不会触发select2-selecting
回调并且不会更新输入。唯一发生的事情是下拉菜单消失,没有别的。
我在同一页面上有另一个select2输入,只允许一个选择而没有自定义选择。单击下拉项目即可正常工作。插件网站上的示例类似于我对点击做出的响应,因此它不是插件的常见错误。
我知道select2实际上有一个隐藏的,完全半透明的容器div,只要select2输入有焦点,就会添加到DOM的屏幕大小。 select2输入位于此' underlay'之上。其他一切都在它下面。当select2输入失去焦点时,' underlay'消失。我认为问题可能是底层的z-index比输入更高,所以当我点击一个下拉项时,我实际上只是单击底衬并导致输入松散焦点。那么,输入(9999)确实具有比底衬(9998)更高的z指数。我只想排除它。
答案 0 :(得分:0)
这个javascript是罪魁祸首:
input.on("select2-blur", function() {
$(this).select2('close');
});
我认为在一个阶段,如果我从输入中删除了下拉菜单,但是如果我在下拉列表可见时点击了输入,那么它就会消失。当输入失去焦点时,我有一个摆脱下拉的方法。这是问题的原因。奇怪的是,即使我现在已将其删除,当我在输入外部点击时,下拉列表会相应地消失,但我不知道为什么会这样。