2014-09-23 81 views
0

我使用select2 jQuery插件和ajax調用來檢索用戶鍵入的下拉列表項目。允許多選(標籤)並允許自定義選擇。當下拉列表出現時,如果我使用光標鍵轉到我想要的項目並按Enter或Tab,那麼一切正常。 select2-selecting回調被觸發並且輸入被選擇文本更新。jQuery Select2插件下拉框沒有響應鼠標點擊

但是,如果我用鼠標單擊某個選項,則不會觸發select2-selecting回調,並且輸入不會更新。發生的唯一情況是下拉菜單消失,沒有別的。

我在同一頁面上有另一個select2輸入,只允許一個選擇並且沒有自定義選擇。點擊下拉項目的工作正常。插件網站上的示例與我所做的相似,也會對點擊做出響應,所以它不是插件的一般錯誤。

我知道select2實際上有一個隱藏的,完全半透明的容器div,當select2輸入有焦點時,添加到DOM的屏幕大小。 select2輸入位於「底層」之上,其他所有內容都位於底層之下。當select2輸入失去焦點時,「底層」消失。我認爲這個問題可能是底層的z-index比輸入更高,所以當我點擊一個下拉項時,我實際上只是單擊底層並導致輸入失去焦點。那麼,輸入(9999)確實比底層(9998)具有更高的Z-索引。我只是想排除這一點。

+0

您使用的是哪個版本的os select2?你能否認識你正在經歷的事情? – 2014-09-23 17:39:56

+0

我會給小提琴一個鏡頭(v3.5.1) – RTF 2014-09-23 18:10:19

回答

0

Javascript代碼是罪魁禍首:

input.on("select2-blur", function() { 
    $(this).select2('close'); 
}); 

我認爲,在一個階段,如果我標籤了輸入的下拉菜單隻消失了,但如果我點擊輸入之外,當下拉是可見的,它留在那裏。當我輸入失去焦點時,我有這種方式可以擺脫下拉菜單。不過這是問題的原因。奇怪的是,即使我現在已經刪除它,但當我在輸入框外單擊時,下拉框會正常消失,但我不知道它是什麼。