양식을 제출하기 전에 jQuery 양식 플러그인을 사용하여 함수를 호출하고 있습니다. 이 함수는 Google 지오 코더 서비스를 호출하여 주소의 좌표를 찾고 양식의 숨겨진 좌표 필드 값을 설정합니다. beforeSubmit 콜백이 완료되기 전에 양식이 제출 된 것으로 보입니다. 그게 정상인가요? beforeSubmit 콜백이 완료 될 때까지 폼이 기다리지 않아야합니까? 어떻게해야할까요?jQuery 양식 플러그인 문제
감사
자바 스크립트
$(function(){
$("#submit").click(function() {
var options = {
beforeSubmit: getPosition, // pre-submit callback
success: showResponse // post-submit callback
};
// bind form using 'ajaxForm'
$('#addresto').ajaxForm(options);
});
});
function getPosition() {
var geocoder = new GClientGeocoder();
var country = $("#id_country").val();
var city = $("#id_city").val();
var postal_code = $("#id_postal_code").val();
var street_number = $("#id_street_number").val();
var street = $("#id_street").val();
var address = street_number+", "+street+", "+postal_code+", "+city+", "+country;
geocoder.getLatLng(address, function(point) {
if (point) {
alert(point);
$("#id_latitude").val(point.lat())
$("#id_longitude").val(point.lng())
} else {
alert("Geocode was not successful");
}
});
return true;
}
function showResponse() {
alert('response');
}
HTML
<form id="addresto" action="" method="POST">
<!-- some city, country, street... fields -->
<input type="Submit" id="submit" value="Submit" />
</form>
좋은 대답은 바로 getLatLng()입니다. 솔루션 1은 약간 hackish하고 전적으로 방탄하지 않습니다. 예를 들어, 함수가 갑자기 오래 걸리고 그 전에 사용자가 제출하면 어떨까요? 새 답을 두 번째 해결 방법에 대해 자세히 설명합니다. –