J'utilise le plugin de formulaire jQuery pour appeler une fonction avant de soumettre le formulaire. Cette fonction appelle google geocoder service, qui trouve les coordonnées d'une adresse et définit la valeur d'un champ de coordonnées cachées dans le formulaire. Il semble que le formulaire est soumis avant la fin du rappel beforeSubmit. Est-ce normal? Le formulaire n'est-il pas supposé attendre que le rappel beforeSubmit soit terminé? Quelle est la meilleure façon de faire cela?Problème avec le plugin de formulaire jQuery
Merci
javascript
$(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>
Bonne réponse, vous avez raison avec getLatLng(). Solution 1 est un peu hackish et pas tout à fait à l'épreuve des balles, par exemple, que se passe-t-il si la fonction prend tout à coup tout à coup et l'utilisateur soumet avant cela? Je vais élaborer sur la deuxième solution dans une nouvelle réponse. –