【问题标题】:google maps autocomplete bounces back already cleared text ...odd....odd...odd谷歌地图自动完成弹回已经清除的文本......奇怪......奇怪......奇怪
【发布时间】:2014-03-04 06:39:22
【问题描述】:

我在 Google MAP 的自动完成功能中出现了这种奇怪的行为(或者我可能错过了某事)……想法?奇怪的:

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

.......瞧!第 3 步中已清除的文本(在我们的示例中为“London”)右回到输入...为什么?

这里是代码:

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

【问题讨论】:

    标签: javascript api google-maps google-maps-api-3 autocomplete


    【解决方案1】:

    回答“为什么”很复杂,因为 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 团队发布的错误报告(自动完成问题)... 回复后我会更新。初步测试表明,此解决方案是该问题的 FIX。谢谢!
    • @user3126121 能否提供错误报告的链接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2015-12-13
    相关资源
    最近更新 更多