【问题标题】:Google maps autocomplete variables issue谷歌地图自动完成变量问题
【发布时间】:2016-09-03 09:37:45
【问题描述】:

我在所有页面上都加载了以下代码(一次包含所有功能)。但输入 location1location2 仅存在这些页面之一。并且不影响功能,但每次我检查这些输入不存在的页面上的 javascript 日志时,我都会收到错误 "InvalidValueError: not an instance of HTMLInputElement" (Firefox)。

JavaScript:

     var autocomplete1 = new google.maps.places.Autocomplete($("#location1")[0], {});
            google.maps.event.addListener(autocomplete1, 'place_changed', function() {
                var place1 = autocomplete1.getPlace();
            });

     var autocomplete2 = new google.maps.places.Autocomplete($("#location2")[0], {});
            google.maps.event.addListener(autocomplete2, 'place_changed', function() {
                var place2 = autocomplete2.getPlace();
            });

在这个空间页面上没有显示控制台错误的非常基本的表单输入(预先归档):

HTML:

<input type="text" class="form-control" id="location1" name="location1" value="<?php echo"$location1"; ?>">
<input type="text" class="form-control" id="location2" name="location2" value="<?php echo"$location2"; ?>">

我想知道我可以做些什么来避免这个错误?任何建议

【问题讨论】:

    标签: javascript forms google-maps autocomplete


    【解决方案1】:

    是的,您可以通过像这样在醋栗页面上进行测试来避免它

    var x = location.href // this will give you the absolute url of the page
    
        if(x=="the url of page where the input exist"){
           var autocomplete1 = new google.maps.places.Autocomplete($("#location1")[0], {});
                    google.maps.event.addListener(autocomplete1, 'place_changed', function() {
                        var place1 = autocomplete1.getPlace();
                    });
        }
    

    所以通过这种方式,脚本在验证该条件之前不会进入该块

    【讨论】:

    • 好的,对不起,我没有提到url不是绝对的,因为url是根据mysql中的记录生成的,例如:test.php?edit=XXXX
    • 你总是可以找到一个方法来从你的 php 脚本中获取动态 url 看到:[stackoverflow.com/questions/6768793/get-the-full-url-in-php] 然后在你的 JS 文件中做一个简单的回显来测试它
    • 感谢 PacMan,我希望有一些解决方案更多地基于输入及其值而不是基于 url(因为这些输入可能会在未来用于更多文件中)。跨度>
    • 这可能是可能的,但要从头开始实现会有点困难:) 祝你好运
    【解决方案2】:

    嗯,我想通了。但如果有任何改进的地方,请发表评论。

    var location1 = $("#location1").val();
    if (location1 === undefined ){} else {
                var autocomplete1 = new google.maps.places.Autocomplete($("#location1")[0], {});
                google.maps.event.addListener(autocomplete1, 'place_changed', function() {
                    var place1 = autocomplete1.getPlace();
                });
    }
    
    var location2 = $("#location2").val();
    if (location2 === undefined ){} else {
                var autocomplete2 = new google.maps.places.Autocomplete($("#location2")[0], {});
                google.maps.event.addListener(autocomplete2, 'place_changed', function() {
                    var place2 = autocomplete2.getPlace();
                });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      相关资源
      最近更新 更多