2017-05-25 69 views
1

我有一個當前正常運行的輸入,正確地搜索JSON數組,並顯示基於選擇什麼的內容。不過,我正在嘗試向搜索工具添加功能,以允許其接受URL中的查詢字符串。從URL查詢字符串jQuery自動完成搜索

即:「site.com?s=test」將填補輸入並搜索「測試」

我能夠正確解碼URI和變量傳遞給輸入。但是,它不會'搜索',實際上需要刪除一個字符並重新鍵入它以接受搜索字詞。

這是jQuery的自動完成功能,我使用:https://github.com/devbridge/jQuery-Autocomplete

我也注意到,我可以在搜索項粘貼到輸入,它會搜索,但如果從URL抓取的價值似乎忽略搜索功能。

  var urlParams; 
      (window.onpopstate = function() { 
       var match, 
        pl  = /\+/g, // Regex for replacing addition symbol with a space 
        search = /([^&=]+)=?([^&]*)/g, 
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, 
        query = window.location.search.substring(1); 

       urlParams = {}; 
       while (match = search.exec(query)) 
        urlParams[decode(match[1])] = decode(match[2]); 
      })(); 

      $("#input").val(urlParams["s"]); 

      $("#input").autocomplete({ 
       lookup: names, 
       onSelect: function (suggestion) { 
        // code here for output 
       } 
      }); 

不知道我缺少什麼。

jfyi - 問題標記保持默認jquery-ui-autocomplete而不是jquery-autocomplete。對困惑感到抱歉。

+0

既然我無法找到任何有價值的回答你的問題在此插件的源代碼,我會sugget你使用jQuery UI的自動完成構件,並從AJAX調用飼料來源,當一個'search'甚至被觸發(只要確保'search'函數等待你的ajax調用提供源代碼。) –

+0

@JeffNoel這真的不是一個合適的解決方案,這需要對已經工作的工具進行完全更改。 – nightowl

回答

0

我能一個URL值順利通過輸入和有它通過將下面的代碼在setTimeout函數搜索(1000工作對我來說):

 $('#input').autocomplete('onValueChange'); 

問題似乎出現時,在自動填充有機會啓動之前,值已經過去了。

0

我沒有在插件的源代碼中找到任何可以幫助您的東西,但這裏有一個替代解決方案,使用jQuery UI的自動填充小部件。


您可以隨時觸發從jQuery UI自動完成插件的.search()方法。

這裏是做什麼的:

觸發搜索事件,並調用數據源,如果沒有被取消的事件。可以通過類似於選擇框的按鈕在單擊時打開建議。當不帶參數調用時,將使用當前輸入的值。

您所要做的就是確保源代碼從遠程數據源(來自AJAX調用)獲取最新信息。你可以在following answer找到如何做到這一點。