我有这种奇怪的行为从谷歌地图自动完成(或可能我错过了某事物)。想法?奇怪的是:
.然后瞧!步骤3中已经清除的文本(本例中的“伦敦”)是否正确返回到input...Why?
这是密码:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script>
</head>
<body>
<h1>MY FORM</h1>
<input type='text' id='myInput' size='50' placeholder='Enter text'>
<input type='button' value='clear' onclick='clearInput()'>
<script>
var myInput = document.getElementById('myInput');
var autocomplete = new google.maps.places.Autocomplete(myInput);
function clearInput(){
myInput.value = '';
}
myInput.addEventListener('change', function(){
console.log(event['target']['value']);
}, false);
</script>
</body>
</html>发布于 2014-02-07 05:35:39
回答“为什么”复杂,因为API源的源是压缩的,很难说出到底发生了什么。
当然,输入的值必须存储在某个地方,因为在某些情况下必须恢复它(例如,当您在下拉列表的值之间切换时)。
基本上,自动完成是侦听输入中的4个事件:
focus, keydown, keyup, blur这些事件都不会在您的函数中触发,因此自动完成可能不会识别新的值。
可能的解决方案:在您的函数中触发这些事件:
function clearInput(){
google.maps.event.trigger(myInput,'focus');
myInput.value = '';
google.maps.event.trigger(myInput,'keydown',{keyCode:46});
google.maps.event.trigger(myInput,'keyup',{keyCode:46});
google.maps.event.trigger(myInput,'blur');
}您可以发送错误报告,这不是预期的行为,应该修复.
https://stackoverflow.com/questions/21617795
复制相似问题