2016-12-16 69 views
0

我使用谷歌地圖的地方API來自動完成搜索輸入值。敲除文本輸入綁定不更新值

<input data-bind="textInput: searchInput" id="location" type="text"> 

所以,當我在輸入框中開始輸入,例如I型Ro,然後從自動完成建議我選擇Rome,然後點擊提交的searchInput()值仍然被設置爲Ro,而不是Rome。 如何在選擇自動完成建議後更新searchInput()

+0

哪裏是自動完成的控制,你可以發佈這些代碼呢?你可以嘗試使用select2。 https://select2.github.io/ – Agalo

+0

這是一個谷歌地圖的地方API功能,'var locationAutocomplete = new google.maps.places.Autocomplete(document.getElementById('location'));' – Hue

+0

在這種情況下,你可以從JS代碼設置searchInput變量的值。我相信locationAutocomplete應該爲您提供在自動完成中選擇的值。 – Agalo

回答

0

從自動完成中選擇時,Google地圖會觸發place_changed事件。您可以捕獲該事件並觸發元素上的input事件敲除可以閱讀:

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    ko.utils.triggerEvent(input, "input"); 
}); 

https://jsfiddle.net/dxdyqbxr/

0

,因爲我用淘汰賽它已經有一段時間,但您的視圖模型裏面,你定義你的searchInput你會創建一個computedFunction。當文本框中的值發生更改時,它會觸發自動完成功能,並且在選擇該值時會更新將更新文本框的searchInput。不確定是否存在無限循環,因此請務必進行測試和調整。

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
 
    self.searchInput('autocompleteValue'); 
 
}); 
 

 
self.UseAutoComplete = ko.computedFunction((
 
    google.maps.places.Autocomplete(self.searchInput()); 
 
));