2017-07-24 67 views
0

我有下面的代碼,這是調用按鈕點擊jquery JSON自動完成。它只在第一次按預期工作,當我點擊命令鏈接時調用自動完成功能,但下一次當我開始在文本框中輸入時(在單擊命令鏈接之前)觸發自動完成功能。當我刷新頁面自動完成時,它只會在點擊鏈接時調用。JQuery的自動完成不工作的按鈕/鏈接點擊

<ui:component> 
    <tr:panelGroupLayout> 
     <tr:inputText id="#{id}" value="#{value}"> 
     </tr:inputText> 

    <tr:commandLink id="idGlobalTrigger" partialSubmit="true"> 
     <tr:image source="/resources/images/tick_light.gif"></tr:image> 
    </tr:commandLink> 
    </tr:panelGroupLayout> 
    <script> 
    $("#idGlobalTrigger").click(function() { 
    /*text box id */     
     var jqueryObj = "#"+"#{id}";  
     $(jqueryObj).autocomplete({ 
       source : function(request, response) {      
        $.ajax({ 
         type : "GET", 
         url : "#{facesContext.externalContext.requestContextPath}/GlobalServlet", 
         data : { 
          term : request.term 
         }, 
         dataType : "json", 
         success : function(
           data) { 
          response(data); 
         }, 
         error : function(
           XMLHttpRequest, 
           textStatus, 
           errorThrown) { 
          // alert('Error1'+textStatus +textStatus); 
         } 
        }); 
       } 
      }); 

      $(jqueryObj).focus(); 
      $(jqueryObj).autocomplete("search"); 
     }); 
    </script> 
</ui:component> 

回答

0

我重新初始化select事件的自動完成。這解決了我的問題。

$(jqueryObj).on("autocompleteselect", function(event,ui) {   
     $(jqueryObj).autocomplete({ 
      source : null, 
      response: function(event, ui) { 
       ui.content.push({value:'', id:0, label:''}); 
      } 
     }); 
0

嘗試包裹在功能自動完成邏輯和呼籲的document.ready

$(document).ready(function() { 
    autocomplete() 
    }); 

function autoComplete(){ 
//logic here 
}; 
0

聽起來像是你可能會複利聽衆的功能。換句話說,在點擊時而不是在頁面加載時調用autoComplete函數(這是前面提到的最佳做法)意味着每次用戶單擊元素時都會添加另一個相同的偵聽器。

每次單擊元素時都需要清除任何以前的偵聽器,以防止它們「堆積」。嘗試使用此代碼更新代碼:

$("#idGlobalTrigger").off("click").on("click",function() { 
+0

感謝您的建議,但這並沒有奏效。 – Pat

+0

您是否檢查了文檔以查看是否有可以調用的「重新初始化」功能? – BWDesign

+0

在文檔中,我看到了這些選項,我認爲這些選項可能會重新初始化「銷燬,禁用,啓用,實例」。在開始自動完成之前或自動完成之後,我使用了一個或多個這些組合,但沒有任何幫助。 – Pat