У меня есть форма для ввода адресса:
<form id="formAddLoc" action="#" method="post">
<input type=text id="Address" />
<input type=hidden id="LongitudeValue" />
<input type=hidden id="LatitudeValue" />
<input type=hidden id="ErrorMessage" />
<input type="button" value="Create" onclick="GetCoords(Address.value)" />
</form>
При нажатии на кнопку вызывается функция на клиенте:
function GetCoords(address) {
var addLocForm = document.getElementById("formAddLoc");
var errorMessageContainer = document.getElementById("ErrorMessage");
var longitudeContainer = document.getElementById("LongitudeValue");
var latitudeeContainer = document.getElementById("LatitudeValue");
var geocoder = new YMaps.Geocoder(address, { results: 1 });
YMaps.Events.observe(geocoder, geocoder.Events.Load, function() {
if (this.length()) {
alert("Местоположение объекта успешно определено.");
errorMessageContainer.value = "Success";
longitudeContainer.value = this.get(0).getCoordPoint().getX();
latitudeeContainer.value = this.get(0).getCoordPoint().getY()
}
else {
alert("Не удалось определить местоположение объекта по адресу.");
errorMessageContainer.value = "error: notfound";
}
});
YMaps.Events.observe(geocoder, geocoder.Events.Fault,
function(error) {
alert("Не удалось определить местоположение объекта по адресу.");
errorMessageContainer.value = "error: " + error.message;
});
addLocForm.submit();
}
Проблема в том, что функция продолжает выполняться, не дожидаясь ответа от геокодера и отправляет форму, не успев получить ответ от геокодера.
Вопрос: как сделать так, чтобы addLocForm.submit(); происходил только после получения ответа от геокодера?