в Jquery, как запустить код с обратным вызовом перед отправкой
Мне нужно запустить JQuery код перед отправкой формы, и, похоже, есть некоторые проблемы.
Просто выслушайте меня, прежде чем поспешите рекомендовать это:
$(function() {
$('form').submit( function() {
/* some code */
return true;
});
});
Мне нужно, после нажатия кнопки «отправить» сначала вычислить переменные долготы и широты адреса с помощью Google API, а затем отправить форму. Это требует прослушивания ответа в функции обратного вызова.
Код, который у меня есть, выглядит примерно так:
$("form input:submit").click(function(e){
e.preventDefault();
var address = $(this).find('.address').val();
geocoder.geocode( { 'address': unescape(address)}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
$(".latSelector input:hidden").val(results[0].geometry.location.lat());
$(".lngSelector input:hidden").val(results[0].geometry.location.lng());
$("form").submit();
}
});
});
Если я делаю то же самое, используя функцию «submit», форма отправляется до того, как сработает функция обратного вызова, а код позади выполняется с пропущенными значениями.
Если я использую событие «click» на кнопке, как в приведенном выше коде, и отправляю вручную, тогда код выполняется правильно, но отправка не вызывает код позади формы.
Я думаю, что я близок к тому, чтобы заставить это работать, но я не могу найти волшебную комбинацию, которая запустит код, обработает значения обратного вызова и затем отправит форму правильно, так что код позади выполняется.