Javascrip / HTML formulaire de calcul

Fermé
Jules_2569 Messages postés 52 Date d'inscription vendredi 13 décembre 2019 Statut Membre Dernière intervention 28 juillet 2020 - Modifié le 23 mai 2020 à 22:09
Jules_2569 Messages postés 52 Date d'inscription vendredi 13 décembre 2019 Statut Membre Dernière intervention 28 juillet 2020 - 24 mai 2020 à 13:49
Bonjour,

J'ai un script pour faire le calcul des prix, tout fonctionne parfaitement sauf que j'ai essayé plusieurs combinaisons différentes et je n'arrive toujours pas a faire une promotion en euro, juste en pourcentage, je sais pas pourquoi, a chaque fois que j'essaye je ne peux pas écrire sur le champs input de la promo en euro.

Les données ne sont pas entrés en base de données c'est juste pour l'affichage des chiffres avant de valider le formulaire. seul la quantité est le prix unitaire hors taxe sont inscrit en base de données.

function calcul_ht_ttc(event) // fonction de calcul
{
 var quantity = $('input[name="quantity"]').val();
 var prix_ht = $('input[name="prix_ht"]').val();
 var total_ht = $('input[name="total_ht"]').val(); 
 var taux_tva  = $('input[name="taux_tva"]').val();
 var montant_tva = $('input[name="montant_tva"]').val();
 var promo = $('input[name="montant_promo"]').val();
 var pourcentage =  $('input[name="pourcentage"]').val();
 var prix_ttc = $('input[name="prix_ttc"]').val();

 
 if(event.target.name=='prix_ttc')
 {

   var new_prix_ttc = (new_total_ht*(1+taux_tva/100)).toFixed(2);  
   $('input[name="prix_ttc"]').val(new_prix_ttc);
  
 }
 else
 {
   
   var new_promo = (pourcentage*prix_ht)*quantity/(100).toFixed(2);  
   $('input[name="montant_promo"]').val(new_promo);
   
   
   var new_total_ht = (prix_ht*quantity)-(new_promo).toFixed(2);  
   $('input[name="total_ht"]').val(new_total_ht);   

      var new_montant_tva = (new_total_ht*(taux_tva/100)).toFixed(2);  
   $('input[name="montant_tva"]').val(new_montant_tva);


   var prix_ttc = (new_total_ht+(1*new_montant_tva)).toFixed(2);  
   $('input[name="prix_ttc"]').val(prix_ttc);
   
}
$(function() // jQuery
{
 $('.myForm input').bind('keyup mouseup', calcul_ht_ttc); // appel de la fonction de calcul lors d'un événement 'keyup' ou 'mouseup'
});
 } 






<div class="modal fade" id="modal-default" >
 <form action="../process/Items.php" method="POST" class="myForm">

  <div class="modal-dialog" role="document" >
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
        </button>

      </div>
      <div class="modal-body">

        <div class="form-group">
          <label>Qty:</label>
          <input  type="number"  class="form-control"  id="quantity" name="quantity" value="1" step="any">
        </div>
        
        <div class="form-group">
         <label>Prix HT:</label>
         <input type="number" class="form-control" id="prix_ht"   name="prix_ht" value="" step="any">
       </div>


       <div class="row">
        <div class="col-md-6">
          <div class="form-group">
            <label>Promo %</label>
            <input  type="number" class="form-control" name="pourcentage"  value=""   step="any">

          </div>
          <!-- /.form-group -->

          <!-- /.form-group -->
        </div>

        <div class="col-md-6">
          <div class="form-group">
           <label>Promo Eur</label>
           <input  type="text" class="form-control" name="montant_promo"  value=""   step="any" >

         </div>

       </div>


     </div>

     <div class="form-group">
       <label>Total HT</label>
       <input type="number" class="form-control"   name="total_ht" value="" step="any" readonly>

     </div>

     <div class="row">
      <div class="col-md-6">
        <div class="form-group">
         <label>Tx TVA</label>
 

         <input  type="text" class="form-control"  name="taux_tva" value="  <?php echo  $vat['vat']; ?>"  readonly>


       </div>
       <!-- /.form-group -->

       <!-- /.form-group -->
     </div>

     <div class="col-md-6">
      <div class="form-group">
        <label>Montant TVA</label>
        <input type="text" class="form-control"  name="montant_tva" value="" step="any" readonly>

      </div>

    </div>


  </div>
  

  <div class="form-group">
   <label>Prix TTC:</label>
   <input type="number" class="form-control"  name="prix_ttc" value="" step="any" readonly>
 </div>

</div>


<div class="modal-footer">
  <div align="left">
    <button type="reset" class="btn btn-default" data-dismiss="modal">Cancel</button>
    <button type="submit" name="createItems" class="btn btn-space btn-primary">Ouvrir la demande</button>
  </form>
</div>
</div>
</div>
</div>
</div>

</div>  
A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
24 mai 2020 à 10:46
Bonjour,

Sans regarder plus loin...
 var new_promo = (pourcentage*prix_ht)*quantity/(100).toFixed(2);

Ne penses tu pas que tu as un souci au niveau de tes parenthèses ?
Le .toFixed(2) .. s'applique à quoi à ton avis ?

bien entendu...Idem pour tes autres calculs...
 var new_promo = (pourcentage*prix_ht)*quantity/(100).toFixed(2);  

var new_total_ht = (prix_ht*quantity)-(new_promo).toFixed(2);


De plus, lorsque l'on travaille en javascript, le réflexe à avoir.. c'est de regarder la CONSOLE de son navigateur.
Je suppose que tu y verras des messages d'erreur...


Je vois également que tu as mis un attribut step sur ton champ promo
 step="any"

Sauf que... l'attribtut STEP ne sert que sur des inputs de type NUMBER ... hors toi, tu as mis un type TEXT....



PS: En Javascript il est préférable de travailler avec les ID des éléments au lieu des NAME.
Comme cela a été fait dans ta précédente question...
Pourquoi changer ??




0
Jules_2569 Messages postés 52 Date d'inscription vendredi 13 décembre 2019 Statut Membre Dernière intervention 28 juillet 2020
24 mai 2020 à 13:49
Au niveau des parenthèse de calcul ? je sais, pas j'ai les bons chiffres qui s’affichent.
Pour le .toFixed(2) c'est pour l'arrondis à 2 chiffres après la virgule. j'ai pas besoin de garder les éléments NAME, sauf pour le ht, et la quantité que je dois insérer dans une table, le reste des autres champs c'est juste pour l'affichage des chiffres avant insertion.

J'ai déjà regarder avec la console, je n'ai aucun message.
0