【发布时间】:2015-10-02 02:43:48
【问题描述】:
我正在尝试在没有按钮的情况下实现用于地理编码的输入元素。即用户开始输入地址,然后从 Google 建议的列表中选择想要的地址
在我的 Javsacript 代码中,我加载以下内容以启用我的输入元素的地理编码:
var geocoder = new google.maps.Geocoder;
var input = document.getElementById('pac-input');
var autocomplete = new google.maps.places.Autocomplete(input);
这提供了一组来自潜在地址输入字段的下拉菜单。当通过向下箭头选择地址然后按下 Enter 时,我使用以下内容捕获 Enter 键并执行地理编码(而不是使用按钮)。
// capture enter on address input selection
$("#pac-input").keyup(function(e) {
if (e.keyCode == 13) {
geocode();
}
});
但是,我还想捕捉鼠标在潜在下拉字段之一上的点击。我正在使用以下内容来捕获所有鼠标点击
// capture event for mouse click or ipad input
$(document).on('click', function(e) {
console.log($(this));
var target = $(e.target);
console.log(target[0]);
});
当我看到鼠标点击时的控制台活动时,这个功能绝对有效,例如:
[document, context: document]
<input id="pac-input" class="form-control" type="text" placeholder="Enter a location" autocomplete="off">
但是,在单击 Google JS 提供的下拉字段之一时,我看到没有控制台日志。这里发生了什么?
编辑:我现在确实看到了控制台输出。但是使用
$(document).on('click', function(e) {
console.log($(this));
var target = e.target;
console.log(target);
});
我看到<body role="document">..</body>。没有太多的标识符..
【问题讨论】:
-
你是对的,但是对于目标,当我点击 Google 建议的地址下拉菜单时,我只会得到 ..。这是与 Chrome 重新启动有关 - 当我没有看到任何控制台日志时,一定是出了问题。
-
target应该是var target = e.target;然后target是你的元素。为什么要target[0]?这就是为什么它无论如何都不会出现在控制台中的原因。如果您想要动态地理编码,您将不得不使用某种事件。navigator.geolocation.watchPostion()可能就是你想要的。
标签: javascript jquery google-maps geocoding