Мне нужно обновить (скрытое) поле формы перед отправкой.
Я перепробовал все возможные варианты реализации, но измененное значение просто не получает представлено -> старое значение представляется вместо
поле Я хочу обновить это
Я поставил его 'первым, чтобы удалить старое значение «XXX_place» :Обновление поля jQuery перед представлением формы сбой - javascript variable scope
$('#XXX_place').val('');
этот код ли это обновление:
if ($('#XXX_place').val() == '') {
event.preventDefault();
}
форма не представляется becouse условие истинно, но поле обновляется и имеет правильное значение -> это очень сбивает с толку
Моя последняя догадка это переменная сфера - все, что сделано в
функции (результаты, статус) {
не установлен globaly и хотя мое поле обновляется результат не представляется , Что я должен изменить?
здесь полный код:
var geocoder;
var placeData;
geocoder = new google.maps.Geocoder();
var input = document.getElementById('XXX_address'),
options = {
types: ['geocode'],
language: ['de'],
componentRestrictions: {country: 'de'}
},
autocomplete = new google.maps.places.Autocomplete(input, options);
$('#searchform').submit(function(event) {
codeAddress();
if ($('#XXX_place').val() == '') {
event.preventDefault();
}
});
function codeAddress() {
$('#XXX_place').val('');
placeData = '';
var bounds = new google.maps.LatLngBounds(new google.maps.LatLng(48.257141, 11.335030),
new google.maps.LatLng(48.014731, 11.828041));
geocoder.geocode({ 'componentRestrictions':{'locality': 'Munich'},
'bounds': bounds, 'address': $('#XXX_address').val()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
placeData = stringifyPlace(results[0].formatted_address, results[0].geometry.location);
$('#XXX_place').val(placeData);
}
});
alert(placeData);
}
function stringifyPlace(address, location) {
return JSON.stringify({"formatted_address": address,
"latitude": location.d,
"longitude": location.e
});
}
Случай асинхронного запроса рассматривается как синхронный. – epascarello
Что это значит? Может ли моя идея реализовать или мне нужно все изменить? – jeff
Это означает '$ ('# XXX_place'). Val (placeData);' запускается после 'if ($ ('# XXX_place'). Val() == '')'. Так что да, вам нужно изменить, как вы поступаете. – epascarello