【发布时间】:2021-02-25 09:15:41
【问题描述】:
我正在尝试使用来自 Google 地理编码器的 lat 和 lng 更新 2 个隐藏值。
<input id="userlat" name="userlat" type="hidden">
<input d="userlng" name="userlng" type="hidden">
值更新正常,但未发布数据。不知道我做错了什么,猜测我的顺序不正确?
$(document).ready(function() {
$('.directory-search.mapping').submit(function(e){
var postal = $('#loc').val();
e.preventDefault();
if(postal) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': postal, componentRestrictions: { country: 'UK' }}, function(results, status) {
var lat = $('.directory-search.mapping').find("input[name=userlat]");
var lng = $('.directory-search.mapping').find("input[name=userlng]");
lat.val(results[0].geometry.location.lat());
lng.val(results[0].geometry.location.lng());
return true;
})
this.submit();
}
});
});
【问题讨论】:
-
geocoder.geocode可能是一种异步方法,这意味着您在实际检索结果并将其放入隐藏字段之前在此处提交表单。在设置隐藏值之后,从该方法的回调函数中提交表单。 -
尝试使用promise或async await来帮助你
标签: javascript jquery forms input