2012-11-27 93 views
0

我正在使用jQuery UI自動完成插件。jquery ui自動完成開放事件不發射

一切工作正常,但我想在最後添加一個框,說「查找更多結果」。

我試圖使用內置的open事件將該框添加到打開的<ul>中,但該事件永遠不會觸發(自動完成列表打開並且功能完整,唯一的問題是打開的事件不會觸發。 )

我的代碼如下所示:

 $("#q").autocomplete({ 
      source: function(request, response) { 
       var results = $.ui.autocomplete.filter(userFriends, request.term); 
       response(results.slice(0, 4)); 
      }, 
      minLength: 2, 
      appendTo: '.searchbox', 
      select: function (event, ui){ 
       window.location.href = '/u/'+ ui.item.value; 
       return false; 
      }, 
      focus: function (event, ui) { 
       return false; 
      }, 
      open: function (event, ui){ 
       console.log("AutoComplete Opened"); 
      } 
     }) 

     .data('autocomplete')._renderItem = function(ul, item) { 
      return $('<li>') 
       .data('item.autocomplete', item) 
       .append(
       '<a>' + 
        '<div>' + 
        '<div><img src="' + item.img + '" alt="" width="50" onerror="onErrorFixProfileImage(this)"/></div>' + 
        '<div>' + item.label + '</div>' + 
        '</div>' + 
        '</a>' 
      ) 
      .appendTo(ul); 
     }; 

有誰知道原因,這一事件將不火?

謝謝!

+0

你有沒有嘗試過在你打開的事件中的警報 – sayannayas

+0

是的,我已經嘗試過使用警報,日誌和jQuery。它只是不開火.. –

+0

它確實在我的情況下火http://jsfiddle.net/9Agqm/7/ – sayannayas

回答

1

後期更新, 我有一個名爲jquery.dimensions的插件安裝,它引發了jquery-ui方法的許多問題。 刪除它解決了這個問題

1

作爲一個測試,你是否嘗試過在插件初始化之外綁定事件? E.g:

$("#q").on("autocompleteopen", function(event, ui) { 
    console.log("AutoComplete Opened"); 
}); 

編輯

你可以嘗試阻止默認的其他事件而不是返回false:

select: function (event, ui){ 
    window.location.href = '/u/'+ ui.item.value; 
    event.preventDefault(); 
}, 
focus: function (event, ui) { 
    event.preventDefault(); 
}, 
+0

剛剛嘗試過。 ..沒有任何反應, 我甚至沒有收到錯誤,只是沒有迴應 –

+0

感謝您的幫助, 我取代了我的退貨,但仍然沒有迴應。 我檢查所有其他事件,他們都工作正常。只有公開活動已經死亡。 我認爲我有一些東西阻止它在我的網站的其他地方。也許你知道它會是什麼? –

+0

現在我在控制檯中出現以下錯誤: 「Uncaught TypeError:無法讀取屬性'defaultView'未定義的」 它可以關聯嗎? –

0

我已經測試的簡化自動完成添加您的open方法。它工作正常,消息正確寫在控制檯上:

(function(){ 
    var aTags = ['java', 'javascript', 'actionscript', 'typescript', 'jscript', 'vbscript']; 
    $('#tags').autocomplete({ 
     delay: 50 
     , source:aTags 
     , select: function(event, data){ 
      var $p = $('<p></p>').html(data.item.value).css({'display': 'inline-block', 'background-color': '#a0a0a0', 'color': '#ff0000'}); 
      $(event.target).after($p); 
     } 
     , open: function (event, ui){ 
      console.log("AutoComplete Opened"); 
     } 
    }); 
})()​ 

Demo

+0

謝謝,我知道它的作品,但由於某種原因,我不... 你知道任何可能覆蓋它嗎? –