2014-02-07 36 views
2

我有這種奇怪的行爲從谷歌地圖自動完成(或者我想念......)的想法?奇數:谷歌地圖自動完成反彈已經清除文本......奇怪......奇怪

  1. 你在輸入中輸入某物,例如: '倫敦'
  2. 你按回車
  3. 按[CLEAR]按鈕
  4. 您點擊進入 '輸入'
  5. 你點擊 '輸入'

外... ....和瞧!已經在步驟3文本中清除(在我們的例子中爲'倫敦')是右後方的輸入...爲什麼?

這裏是代碼:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script> 
</head> 
<body> 

    <h1>MY FORM</h1> 
    <input type='text' id='myInput' size='50' placeholder='Enter text'> 
    <input type='button' value='clear' onclick='clearInput()'> 

    <script> 
       var myInput = document.getElementById('myInput'); 
       var autocomplete = new google.maps.places.Autocomplete(myInput); 
       function clearInput(){ 
        myInput.value = ''; 
       } 

       myInput.addEventListener('change', function(){ 
         console.log(event['target']['value']); 

       }, false); 

    </script> 
    </body> 
</html> 

回答

3

回答「爲什麼」的複雜,因爲API源的源被壓縮,很難說什麼是真正對那裏發生的。

當然,輸入的值必須存儲在某個地方,因爲它在某些情況下必須恢復(例如,在下拉列表的值之間切換時)。

基本上自動完成的監聽輸入4個事件:

focus, keydown, keyup, blur 

這些事件都不會激發你的功能,所以自動完成可能無法識別新的價值。

可能的解決辦法:觸發你的函數這些事件:

function clearInput(){ 
    google.maps.event.trigger(myInput,'focus'); 
    myInput.value = ''; 
    google.maps.event.trigger(myInput,'keydown',{keyCode:46}); 
    google.maps.event.trigger(myInput,'keyup',{keyCode:46}); 
    google.maps.event.trigger(myInput,'blur'); 
} 

您可以發送錯誤報告,這不是預期的行爲,應該是固定的。

+0

狀態更新:發佈到Google Maps APIv3團隊的bug報告(自動完成問題)...回覆後我會更新。最初的測試表明這個解決方案對於這個問題是一個FIX。謝謝! – zaggi

+0

@ user3126121你可以給一個錯誤報告的鏈接嗎? –