2014-09-30 170 views
1

我想要我的谷歌地圖我的jQuery自動填充字段。以便該字段可以顯示我預定義數組的結果,並同時解析爲Google地圖。整合谷歌地圖自動完成與jQuery的自動完成

我的代碼:

var autocompleteService = new google.maps.places.AutocompleteService(); 
var autocompleteList = []; 
var eventsList = ["event1","event2"]; 

$("#edtSearch").autocomplete({ 
     source: eventsList 
}).on("autocompleteopen",function(event){ 
     autocompleteList = eventsList.slice(0); 

     autocompleteService.getQueryPredictions({input: $(this).val()}, 
     function(predictions, status){ 
      if (status != google.maps.places.PlacesServiceStatus.OK) { 
       console.log(status); 
       return; 
      } 

      for (var k = 0, prediction; prediction = predictions[k]; ++k) 
      { 
       prediction = String(prediction.description).replace(/,/g,""); 
       autocompleteList.push(prediction); 
      } 

      $("#edtSearch").autocomplete({ 
       source: autocompleteList 
      }); 
      $("#edtSearch").autocomplete("search"); 
      console.log(autocompleteList); 
     }); 
}); 

HTML:

<input id="edtSearch" type="text" size="50" /> 

現在這個代碼的工作,但由於 「autocompleteopen」 和 「自動完成(」 搜索 「)」 叫同樣的事情,我得到一個爲操作重複循環並最終在控制檯中「OVER_QUERY_LIMIT」。 我的問題是,我如何正確綁定事件,以便他們不會遞歸調用對方?我已經使用

var edtSearch = document.getElementById("edtSearch"); 
edtSearch.addEventListener("keypress",function(){}); 

和similiar解決方案嘗試,但我得到的錯誤是「未捕獲的錯誤:缺少參數必須指定輸入」。 我該如何解決這個問題?

回答

0

getQueryPredictions調用中的input參數在您的情況下是未定義的,空值或空字符串。

要解決這個問題,你需要檢查input(在你的案例中爲$(this).val())的值是否有一些字符。