3

我正在使用Google地圖位置V3自動填充功能。我想要有一個功能,如果用戶開始在搜索字段中輸入內容,自動完成下拉菜單中的第一項會自動選中。Google地圖自動完成功能始終選擇第一項

與Facebook中的搜索功能類似。

我已經與這2個線程的幫助更新了谷歌地圖自動完成:

但我不能找到這個新問題的解決方案...

我張貼在這裏我的代碼: http://jsfiddle.net/Chazz09/YfPv3/5/

$(document).ready(function(){ 
    var pac_input = document.getElementById('searchfield'); 
    // prevents enter key to submit form//  
    $('#searchfield').keydown(function (e) { 
    if (e.which == 13 && $('.pac-container:visible').length) return false; 
    }); 
    // prevents enter key to submit form// 

    (function pacSelectFirst(input){ 
    // store the original event binding function 
    var _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent; 

    function addEventListenerWrapper(type, listener) { 
     // Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected, 
     // and then trigger the original listener. 

     if (type == "keydown") { 
     var orig_listener = listener; 
     listener = function (event) { 
      var suggestion_selected = $(".pac-item.pac-selected").length > 0; 
      if (event.which == 13 && !suggestion_selected) { 
      var simulated_downarrow = $.Event("keydown", {keyCode:40, which:40}) 
      orig_listener.apply(input, [simulated_downarrow]); 
      } 

      orig_listener.apply(input, [event]); 
     }; 
     } 

     // add the modified listener 
     _addEventListener.apply(input, [type, listener]); 
    } 

    if (input.addEventListener) 
     input.addEventListener = addEventListenerWrapper; 
    else if (input.attachEvent) 
     input.attachEvent = addEventListenerWrapper; 

    })(pac_input); 

    $(document).ready(function() 
        { 
    function initialize() { 
     var options = { 
     types: ['geocode'], 
     componentRestrictions: {country: "fr"} 
     }; 
     var autocomplete = new google.maps.places.Autocomplete(pac_input, options); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
    }); 
}); 

回答

0

試試這個代碼...你的列表打開的時候..

$('#yourAddressTextBox').val($('.pac-container').find('.pac-item').eq(0).text()); 

您的keydown功能:

$('#searchfield').keydown(function (e) { 
setTimeout(function(){ 
    $('#searchfield').val($('.pac-container').find('.pac-item').eq(0).text());},1000); 
    if (e.which == 13 && $('.pac-container:visible').length) return false; 
}); 
+0

感謝您的建議,但我無法讓它正常工作。也許我做錯了什麼。你測試了你的代碼嗎? – Chazz

+0

請把你的代碼我片段 –

+0

我試圖把你的片段在不同的地方, 因此,沒有我addded一種功能,當列表(的.pac-containter)可見: 如果($(「PAC-容器。」! ).is(':visible')){ $('#searchfield')。val($('。pac-container')。find('。pac- item')。eq(0).text() ); } 但還是沒有成功,我的代碼可能是incorrent。 張貼在這裏的代碼:http://jsfiddle.net/Chazz09/YfPv3/15/ – Chazz

1

這個怎麼樣?

$("input").keypress(function(event){ 
      if(event.keyCode == 13 || event.keyCode == 9) { 
       $(event.target).blur(); 
       if($(".pac-container .pac-item:first span:eq(3)").text() == "") 
        firstValue = $(".pac-container .pac-item:first .pac-item-query").text(); 
       else 
        firstValue = $(".pac-container .pac-item:first .pac-item-query").text() + ", " + $(".pac-container .pac-item:first span:eq(3)").text(); 
       event.target.value = firstValue; 

      } else 
       return true; 
}); 
相關問題