2014-02-15 51 views
3

我使用Google將自動完成功能放置在文本框上,它基本上正在工作,選取地點並將其填充到文本框中。如何格式化Google地點將自動完成文本格式推入文本框

問題是,我只想填充選擇名稱 - 而不是格式化出自動完成列表產生的列表的全名+地址。我似乎無法找到一種方法來重寫進入文本框的內容。

var $name = $("#txtName"); 
    $name.focus(); 

    var autocomplete = new google.maps.places.Autocomplete($name[0]); 
    google.maps.event.addListener(autocomplete, 'place_changed', function() { 
     var place = autocomplete.getPlace(); 

     // explicitly update model 
     // but doesn't display in UI 
     $scope.locationData.Name = place.name; 


     // explicitly update the input box - doesn't update UI 
     $name.val(place.name); 

     return false; // doesn't work - updates UI 
    }); 

基本上我想要做的就是通過執行任務自己並迫使自動完成不設置文本框的值接管輸入框中的文本分配自己。

這可能嗎?

回答

1

設置值的時間很短。

$('#NameBox').on('blur change', function() { $(this).val(place.name).off('blur change'); }); 
setTimeout(function() { $('#NameBox').val(place.name); }, 150); 

使用.off()允許用戶編輯名稱,如果他們希望。如果您希望僅允許地點API名稱刪除.off()