gpt4 book ai didi

javascript - 谷歌地图自动完成弹回已经清除的文本......奇怪......奇怪......奇怪

转载 作者:行者123 更新时间:2023-11-29 19:43:21 24 4
gpt4 key购买 nike

我有这种来自 Google map 自动完成的奇怪行为(或者我可能错过了某事)...想法?奇怪的:

  1. 您在输入中输入某物,例如“伦敦”
  2. 您按 [ENTER]
  3. 你按下 [CLEAR] 按钮
  4. 你点击进入'输入'
  5. 您在“输入”之外点击

.......瞧!已经在步骤 3 中清除的文本(在我们的示例中为“伦敦”)右移回输​​入中...为什么?

代码如下:

<!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>

最佳答案

回答“为什么”很复杂,因为 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');
}

您可以发送错误报告,这不是预期的行为,应该修复。

关于javascript - 谷歌地图自动完成弹回已经清除的文本......奇怪......奇怪......奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com