2016-12-16 68 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()); 
 
));