Interactivité formulaire symfony

Résolu/Fermé
new-dev Messages postés 17 Date d'inscription jeudi 8 décembre 2016 Statut Membre Dernière intervention 6 février 2017 - Modifié par new-dev le 8/12/2016 à 18:18
new-dev Messages postés 17 Date d'inscription jeudi 8 décembre 2016 Statut Membre Dernière intervention 6 février 2017 - 9 déc. 2016 à 17:43
Bonjour,

J'aimerais avoir de l'interractivé en temps réel dans un formulaire Symfony.

Par exemple : j'utilise un formulaire Symfony et je voudrais que quand l'utilisateur rentre des données, par exemple, j'ai des champs NumberType (prix, quantité, total et un bouton acheter), c'est un exemple.

Quand l'utilisateur saisit une quantité, faire en sorte que l'input total soit automatiquement mis à jour, sans recharger la page. Je ne sais pas si c'est possible, ou trop compliquer à réaliser ?

Est-ce que c'est réalisable, possible facilement ?

Merci

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
9 déc. 2016 à 14:35
Salut,

Tu peux utiliser javascript pour réaliser ceci.

L'idée est d'ajouter une fonction sur l'événement onchange de chaque input prix et quantité et de réaliser le calcul dans cette fonction.

Un exemple simplifié :
<label>Prix 1 <input type="text" name="prix1" class="prix"></label>
<label>Quantité 1 <input type="text" name="quantite1" class="quantite" value="1"></label>
<br>
<label>Prix 2 <input type="text" name="prix2" class="prix"></label>
<label>Quantité 2 <input type="text" name="quantite2" class="quantite" value="1"></label>
<br>
Total : <input type="text" class="total" readonly>


// on récupère tous les input class="prix"
var inputsPrix = document.querySelectorAll('.prix');
// on récupère tous les input class="quantite"
var inputsQuantite = document.querySelectorAll('.quantite');

// on ajoute un listener sur tous les input prix et quantite pour exécuter la fonction calculTotal() dès qu'on change une de leur valeur
for (var i = 0; i < inputsPrix.length; i++) {
  inputsPrix[i].addEventListener('change', calculTotal);
}
for (var i = 0; i < inputsQuantite.length; i++) {
  inputsQuantite[i].addEventListener('change', calculTotal);
}

function calculTotal() {
  var total = 0;

  for (var i = 1; i <= inputsPrix.length; i++) {
    // on calcul le total : prix1 * quantite1 + prix2 * quantite2 ...
    var prixI = document.querySelector('[name="prix' + i + '"]').value;
    var quantiteI = document.querySelector('[name="quantite' + i + '"]').value;
    total += prixI * quantiteI;
  }

  document.querySelector('.total').value = total;
}


Bonne journée,
0
new-dev Messages postés 17 Date d'inscription jeudi 8 décembre 2016 Statut Membre Dernière intervention 6 février 2017 1
9 déc. 2016 à 17:43
Nickel, merci, bonne journée :)
0