2012-11-14 60 views
5

我最近更新了jquery ui及其自動完成插件 - 但是在新版本中,它不會讓我用鼠標單擊來選擇選項,而且必須使用上下箭頭。如何通過鼠標點擊重新啓用選擇?Jquery UI Autocomplete不允許用鼠標選擇選項

順便說一下新版本1.9.1,舊版本是1.8.2

+0

您仍然可以通過UI 1.9.1中的鼠標進行選擇。嘗試使用這裏的例子:http://jqueryui.com/autocomplete/你可以發佈一些代碼? – Elliott

+0

嗨艾略特 - 演示工作正常,但在我使用插件的兩個頁面上,我無法用鼠標選擇。必須是某處的衝突。如果我有機會,我會看看是什麼導致它並提交作爲錯誤 – coalvilledave

+0

你可以提供任何代碼? – Dom

回答

4

在我的例子鼠標選擇能力是由一個過時的第三方jQuery插件禁用。這個線程給了我一個什麼可能是錯誤的想法:http://forum.jquery.com/topic/autocomplete-click-to-select-item-not-working-in-1-9-1

我正在使用舊版本的jQuery驗證插件(https://github.com/jzaefferer/jquery-validation)。我一個接一個地關閉了一個插件,看看是哪個造成了這種不正當行爲。

+0

感謝bubblez,爲我解決了這個問題,你已經爲我節省了幾個小時:) –

+0

對我來說,事實證明,這是一個在主體內點擊stopPropagation()的呼叫,例如, $(「body」)。click(function(e){e.stopPropagation()};查找這樣的代碼並註釋掉stopPropagation()。 – Asmussen

+0

Thanks,That fixed it –

1

我有同樣的問題,即使使用的是最新版本的jQuery的UI當時1.11.4

檢查源代碼文件jQuery的ui.js我發現了一塊像這樣:

"click .ui-menu-item": function(event) { 
        var target = $(event.target); 
        if (!this.mouseHandled && target.not(".ui-state-disabled").length) { 
         this.select(event); 

         // Only set the mouseHandled flag if the event will bubble, see #9469. 
         if (!event.isPropagationStopped()) { 
          this.mouseHandled = true; 
         } 

的問題是mouseHandled VAR設置爲true。但只有在event傳播尚未停止的情況下才會發生。

因此,作爲解決方案,我定義我的自動完成這樣的:

$('.autocomplete').autocomplete({ 
    source: ['value1','value2','value3','value4'], //my source 
    select: function(event, ui){ 
    event.stopPropagation(); //the select event will work next time you click 
    //your logic comes here ... 
    } 
}) 

它的工作對我來說,我希望它爲你的作品! =)