Calculs à partir de champs input

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - Modifié le 16 nov. 2021 à 14:37
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 17 nov. 2021 à 15:08
Bonjour à tous,

Dans un formulaire, j'ai trois input :
. prix
. quantité
. total
Prix est alimenté par un select mais il est aussi accessible en modification manuelle.
Quand j'entre une quantité dans "quantité", le total se calcul parfaitement, mais si
j'efface le contenu de "quantité" avec la touche backspace pour laisser le champs vide
par exemple l'affichage de l'input total ne change pas et reste sur le dernier calcul...
Comment faire pour afficher un 0 ou vider le champ ?
Ça ne doit pas être bien compliqué mais je ne vois pas comment m'y prendre.
J'ai essayé d'inclure l'affectation de TotLi dans un if avec comme conditions des ===, =' '
mais ça ne fonctionne pas !

Merci d'avance pour votre aide !


<select name="prestation" id="prestation" required="" >
    <option value="0">Choisir une prestation</option>
        <?php
        foreach($prestations as $valeur3) {
            echo '<option value="' . $valeur3['id_prestation'] . '">' . $valeur3['designation'] . '</option>';
        }
        ?>
</select>
<input name="prix" id="prix" type="text" value="" onkeypress="return chiffres(event);"/>
<input name="quantite" id="quantite" type="text" value="" onkeypress="return chiffres(event);"/>
<input name="total" id="total" type="text" value="" readonly="true;"/>



// ##### SURVEILLANCE CHGT INPUT QUANTITE & PRIX #####
    $("#quantite, #prix").keyup(function(){
        majPrix();
    });
// ##### FONCTION CALCUL DE LA PRESTATION TOTALE #####
function majPrix(){
    var prix_ligne = parseFloat(prix.value);
    var quantite_ligne = parseFloat(quantite.value);

    if (!isNaN(prix_ligne) && !isNaN(quantite_ligne)) {
        var TotLi = prix_ligne*quantite_ligne;
        document.getElementById("total").value = TotLi;
    }
}




Configuration: Linux / Firefox 94.0

1 réponse

jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié le 16 nov. 2021 à 15:01
Bonjour,

En ajoutant un ELSE à ton IF
un truc du genre
if (!isNaN(prix_ligne) && !isNaN(quantite_ligne)) {
        var TotLi = prix_ligne*quantite_ligne;
        document.getElementById("total").value = TotLi;
} else {
       document.getElementById("total").value = 0;
} 


0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
17 nov. 2021 à 15:08
C'est exactement ça !
C'est énervant tellement c'est simple, mais à force d'avoir le nez dedans je ne voyais pas l’évidence !
Doublement MERCI jordane45 pour ton aide, car il me semble que tu m'as déjà débloqué sur les
calculs au changement du select ! ;-)
0