Je fais un formulaire qui calcule la distance entre deux adresses (avec API de Google Matrix) et lorsque je soumettez le formulaire, il ne me montrent que la distance et la durée entre les deux points (sur la soumission de l'entrée 2). J'aimerais avoir la première entrée pour être celle qui montre la durée et la km entre les deux points et la deuxième entrée pour envoyer ces informations au fichier "toreservationrequest.php" qui mettra dans la base de données.
ici est une image pour avoir une meilleure idée: p>
Le code JavaScript: p >
p> $(function() {
google.maps.event.addDomListener(window, 'load', function () {
var from_places = new google.maps.places.Autocomplete(document.getElementById('from_places'));
var to_places = new google.maps.places.Autocomplete(document.getElementById('to_places'));
google.maps.event.addListener(from_places, 'place_changed', function () {
var from_place = from_places.getPlace();
var from_address = from_place.formatted_address;
$('#origin').val(from_address);
});
google.maps.event.addListener(to_places, 'place_changed', function () {
var to_place = to_places.getPlace();
var to_address = to_place.formatted_address;
$('#destination').val(to_address);
});
});
// calcule la distance entre point A et point B:
function calculateDistance() {
var origin = $('#origin').val();
var destination = $('#destination').val();
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin],
destinations: [destination],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.metric, // KM et métres
avoidHighways: false,
avoidTolls: false
}, callback);
}
// renvoie la distance:
function callback(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
$('#result').html(err);
} else {
var origin = response.originAddresses[0];
var destination = response.destinationAddresses[0];
if (response.rows[0].elements[0].status === "ZERO_RESULTS") {
$('#result').html("erreur");
} else {
var distance = response.rows[0].elements[0].distance;
var duration = response.rows[0].elements[0].duration;
console.log(response.rows[0].elements[0].distance);
var distance_in_kilo = distance.value / 1000;
var duration_text = duration.text;
var duration_value = duration.value;
$('#in_kilo').text(distance_in_kilo.toFixed(2));
$('#duration_text').text(duration_text);
$('#duration_value').text(duration_value);
$('#from').text(origin);
$('#to').text(destination);
console.log(distance_in_kilo);
console.log(duration_text);
$("#result").html("<label>Distance (KM): </label><p id='distance'>"+ distance_in_kilo +"</p> <label>Durée : </label><p id='duree'>"+ duration_text +"<p>");
}
}
}
// affiche resultat
$('#distance_form').submit(function(e){
e.preventDefault();
calculateDistance();
var strFromPlaces = $('#from_places').val();
var strToPlaces = $('#to_places').val();
if(strFromPlaces.length == '' || strToPlaces.length ==''){
alert('Veuillez renseigner tout les champs');
}
});
});
3 Réponses :
parce que vous avez Utilisez ceci pour le résultat attendu: P> e.preventdefault (); code> sur soumettre $('#submit').click(function(e){
e.preventDefault();
calculateDistance();
var strFromPlaces = $('#from_places').val();
var strToPlaces = $('#to_places').val();
if(strFromPlaces.length == '' || strToPlaces.length ==''){
alert('Veuillez renseigner tout les champs');
}
$("#distance_form").submit();
});
Lorsque je le retire, il soumet le formulaire sans montrer la durée et la distance
Ajoutez un autre bouton qui le fera et ajoutez un Cliquez sur CODE>
Vous devez avoir quelque chose i> subumer le code, essayez d'ajouter $ ("# distance_formule"). Soumettre (); code> à la fin de la section intitulée affiche résultant < / code>.
e.preventDefault (); code> empêchera le formulaire de soumettre. Ce qui est bon. Mais après avoir terminé vos calculs, vous devrez soumettre le formulaire. Ajoutez donc $ ("# distance_form"). Soumettre (); code> et les données de formulaire seront soumises. P>
J'ai trouvé la solution: J'ai mis et identifier "Calculer" sur la première entrée Soumettre et une pièce d'identité "Soumettre2" sur la deuxième soumission.
sur le formulaire i supprimé l'action = "réservationRequest.php" p>
et sur la seconde soumission que j'ai mise en attribut: et pour le JavaScript: p> formadaction = "réservationdrequest.php" code> p>
Essayez console.log dans la soumission pour voir si elle incendie même. C'est toujours un bon endroit pour commencer. :)