住所を座標に変換するためにGoogle Maps Geocoding APIを使用するいくつかのjQueryコードを使用して、alert()
を使用して結果をポップアップウィンドウに表示します。ここでは正常に動作コードは次のとおりです。alert()が完了した後にフォームを送信する
$("#searchbox_form #search_button").click(function(e){
e.preventDefault();
var address = $("#location").val();
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
$("input#user_lat").val(results[0].geometry.location.lat());
$("input#user_lng").val(results[0].geometry.location.lng());
alert("lat: " + $("input[name='user_lat']").val());
alert("lng: " + $("input[name='user_lng']").val());
}
});
});
しかし、今私は、ユーザーが警告ボックスを閉じた後、jQueryのフォーム$searchbox_form
を提出したいと思います。ただし、コードチャンクの最後に$("#searchbox_form").submit();
を追加すると、アラートボックスが表示される前にフォームが送信されます。これにより、フォームが提出されますの前にGoogle Mapsジオコーダが結果を返します。
フォームが送信される前にジオコーダが結果を返すようにするにはどうすればよいですか?
上記のコードと同じですが、1行追加して、最後にフォームを送信するには:あなたはジオコード機能へのコールバックの中に提出移動する必要が
$("#searchbox_form #search_button").click(function(e){
e.preventDefault();
var address = $("#location").val();
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
$("input#user_lat").val(results[0].geometry.location.lat());
$("input#user_lng").val(results[0].geometry.location.lng());
alert("lat: " + $("input[name='user_lat']").val());
alert("lng: " + $("input[name='user_lng']").val());
}
});
$("#searchbox_form").submit(); //THIS IS THE ADDED LINE OF CODE!!
});
:http://stackoverflow.com/questions/436608/can-you-wait-for-javascript-callback – Rystraum
おかげで、より良い今それを理解します! – Nyxynyx