我正在尝试将虚拟键盘附加到绑定到Google地点自动完成输入的功能上。
如果我在输入框中手动输入字母,基于地图中心的自动完成预测列表会显示下拉框。如果我点击虚拟键盘上的按键,输入框会正确更新,但自动完成预测列表不会更新。
我尝试使用虚拟键盘change
回调触发"keyup"(stackoverflow结果)、"keypress"、"keydown"、"change"事件,甚至尝试了这个(demo):
change : function(e, keyboard, el) {
google.maps.event.trigger(autocomplete, 'place_changed');
}
这通常会导致JavaScript错误,显示autocomplete.getPlace();
没有返回结果。
因此,我现在尝试了下面的代码(在此演示中),它使用更改回调触发自动完成预测,但是您可以在该演示中看到结果不同。
change : function(e, keyboard, el) {
var $el = $(el),
service = new google.maps.places.AutocompleteService();
if ($el.val() !== "") {
service.getQueryPredictions({ input: $(el).val() }, function(predictions, status) {
if (status != google.maps.places.PlacesServiceStatus.OK) {
alert(status);
return;
}
var list = '', $results = $('#results');
for (var i = 0, prediction; prediction = predictions[i]; i++) {
list += '<li>' + prediction.description + '</li>';
}
$results.html(list);
});
}
}
理想情况下,我希望在虚拟键盘上输入时,能够触发已经建立的自动完成预测下拉菜单更新。