【发布时间】:2013-05-11 02:40:18
【问题描述】:
我有一些代码,当单击搜索框时,会在位置框中对位置进行地理编码(除非自动建议已完成)并提交表单。
问题是,点击 searhc 按钮并且地理编码成功后,表单没有提交。谁能告诉我哪里出错了?
这是 jsfiddle 的链接:http://jsfiddle.net/sR4GR/35/
这是完整的代码:
$(function () {
var input = $("#loc"),
lat = $("#lat"),
lng = $("#lng"),
lastQuery = null,
autocomplete;
function processLocation(query) {
var query = $.trim(input.val()),
geocoder;
if (!query || query == lastQuery) {
console.log("Empty or same variable");
return;
}
lastQuery = query;
geocoder = new google.maps.Geocoder();
geocoder.geocode({
address: query
}, function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
lat.val(results[0].geometry.location.lat());
lng.val(results[0].geometry.location.lng());
} else {
alert("We couldn't find this location. Please try an alternative");
}
});
}
autocomplete = new google.maps.places.Autocomplete(input[0], {
types: ["geocode"],
componentRestrictions: {
country: "uk"
}
});
google.maps.event.addListener(autocomplete, 'place_changed', processLocation);
$('#searchform').on('submit', function (event) {
processLocation();
event.preventDefault();
});
});
【问题讨论】:
-
event.preventDefault();可能是问题 -
我也这么认为,但我需要它来阻止在没有首先对位置进行地理编码的情况下提交表单:s
-
您不能对文本字段的更改事件运行 processLocation() 并在值有效之前禁用提交按钮吗?
标签: javascript jquery performance