如何检测用户何时在Google Places字段中输入无效位置
How to detect when a user enters an invalid location to a Google Places field?
我有一个表单,它包含一个连接到Google Places API的文本字段。我想做的是,当输入识别的地址时,我还可以获得输入位置的lat/long位置,并将值冲击到其他表单字段中,这样它们就可以在后端保存,而无需另一个API调用。以下初始化代码以及一些调试日志对此运行良好(为愚蠢的字段ID道歉;我责怪Drupal…)
function placesInitialize() {
var input = document.getElementById('edit-field-google-location-und-0-value');
var autocomplete = new google.maps.places.Autocomplete(input);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var geocoder = new google.maps.Geocoder();
var address = document.getElementById('edit-field-google-location-und-0-value').value;
geocoder.geocode({ 'address': address }, function (results, status) {
console.log('inside geocoder.geocode');
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
console.log('lat and long = ' + latitude + ' and ' + longitude);
$('#edit-field-location-latitude-und-0-value').val(latitude);
$('#edit-field-location-longitude-und-0-value').val(longitude);
}
else {
console.log('GeocoderStatus not ok:');
console.log(google.maps.GeocoderStatus);
}
});
});
}
google.maps.event.addDomListener(window, 'load', placesInitialize);
现在,如果用户输入了Places无法识别的内容,我想清除lat和long字段。这就是我的问题所在:我如何发现这种情况的发生?我原以为google.maps.GeocoderStatus
不正常会发出这种信号,但这些日志从未启动。事实上,在这种情况下,"inside-geocoder.geocode"消息也不会出现。
我已经看过了,但还没有发现google.maps在这种情况下可能会引发的事件。我可以在输入字段的blur
事件上挂起一些东西,但我不确定它会做什么(输入字段中会有一些东西,只是无效的东西)。我曾想过要有一个信号量来跟踪地理编码器是否被调用,但我仍然需要检测"无效输入"状态,以捕捉用户首先输入有效内容,然后用无效内容替换的情况。
不管怎样:有什么想法吗?谢谢
place_changed
仍然被激发,即使没有选择建议的位置并且给出了"自由文本"。如果在地理编码器中找不到位置,则place.address_components
将为空,您可以检测到:
autocomplete.addListener('place_changed', fillInAddress);
function fillInAddress() {
var place = autocomplete.getPlace();
if(!place.address_components) {
// then place doesn't exist
}
}
place_change
仅在用户从下拉列表中选择其中一个建议时才会触发。当地方图书馆不返回建议时,什么都不会发生。
由于自动完成根本无法访问建议(除非您选择一个),您可以通过自动完成服务请求建议(然后您可以检查是否有任何建议)。
您可以根据返回的建议(例如通过jQueryUI)自行实现自动完成功能
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 在wordpress一定时间后更改自定义字段
- 如何在HTML输入字段中添加不可删除的后缀
- Meteor-添加用户自定义字段的方法不起作用
- 互斥单选按钮和相应的输入字段
- 在IE9中的输入字段中输入焦点最近按钮
- 选中单选框时将属性添加到输入字段
- 带有验证和隐藏字段值的提交按钮
- 主干窗体隐藏字段未呈现
- 带有let的JS/EECMAScript6私有字段的模式
- 按钮字段确认点击不'不起作用
- jQuery Wan Spinner插件的多个字段
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 如何检测用户何时在Google Places字段中输入无效位置
- 将Google Places自动完成pac容器与输入字段关联