Javascript 谷歌地图自动完成反弹回已经清除的文本…奇怪…奇怪…奇怪
我在谷歌地图自动完成中有这种奇怪的行为(或者我错过了一些东西)。。。思想?奇怪的是:Javascript 谷歌地图自动完成反弹回已经清除的文本…奇怪…奇怪…奇怪,javascript,api,google-maps,google-maps-api-3,autocomplete,Javascript,Api,Google Maps,Google Maps Api 3,Autocomplete,我在谷歌地图自动完成中有这种奇怪的行为(或者我错过了一些东西)。。。思想?奇怪的是: 你在输入中输入某物,例如“伦敦” 按[回车] 你按下[清除]按钮 你点击“输入” 您在“输入”外部单击 。。。。。。。瞧!步骤3中已清除的文本(在我们的示例中为“伦敦”)正好返回到输入中…为什么 代码如下: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://maps
<!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>
我的表格
var myInput=document.getElementById('myInput');
var autocomplete=new google.maps.places.autocomplete(myInput);
函数clearInput(){
myInput.value='';
}
myInput.addEventListener('change',function()){
日志(事件['target']['value']);
},假);
回答“为什么”很复杂,因为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');
}
您可以发送错误报告,这不是预期的行为,应予以纠正。状态更新:错误报告已发布到Google Maps APIv3团队(自动完成问题)。。。回复后我会更新。初步测试表明,此解决方案解决了该问题。谢谢@user3126121你能给我一个错误报告的链接吗?