verification d'un champ input

Eléphanteau du PHP | 37 Messages

03 avr. 2008, 21:12

Bonjour,

J'ai une page qui permet d'effectuer le retour de produit. J'affiche le libelle du produit, la quantité qui avait été commandée.Si je souhaite en renvoyer un produit, je coche la checkox correspondante et je rentre la quantité que je veux renvoyer(si un meme produit a été commandé plusieurs fois et que l'on désire en renvoyer qu'un seul par exemple).
Je n'arrive pas à tester si la quantité saisie (quantité d'un produit à renvoyer) est supérieure à la quantité qui avait été commandée afin d'afficher un message d'erreur.Cela fonctionne parfois pour le premier produit, j'ai l'impression que je ne récupère pas toutes les quantités.

Pour la quantité à renvoyer : Je récupère la valeur saisie dans le input de type text

Pour la quantité qui avait été commandée: Je récupère la valeur dans un input de type hidden

Code : Tout sélectionner

function saisie() { var quantite=document.getElementById('quantite').value; var id_produit=document.getElementById('id_produit'); var quantite_hidden=document.getElementById('quantite_hidden'); var element2 = null; var taille = document.forms['formulaire'].elements.length; for (i=0;i<taille;i++) { element2 = document.forms['formulaire'].elements[i]; if(element2.name == "quantite_hidden") { if(quantite>element2.value) //quantite[j].value { alert("La quantité saisie est supérieure à celle commandée"); return false; } } } } <form name="formulaire" action="traitement.php" method="post" onsubmit="return saisie();"> <?php //mon formulaire echo'<input size="5" type="text" name="quantite['.$id_produit.']" value="'.$quantite.'" id="quantite" />' echo'<input type="hidden" name="quantite_hidden['.$id_produit.']" value="'.$quantite.'" id="quantite_hidden" />'; echo'<input type="checkbox" name="id_produit[]" value="'.$id_produit.'" id="id_produit" />'; echo'<input type="submit" name="retour" value="Valider la demande de retour" />'; ?> </form>

Mammouth du PHP | 1353 Messages

04 avr. 2008, 10:11

Bonjour,

Pourquoi cette boucle for ?

Pourquoi ne pas comparer directement

document.getElementById('id_produit').value et quantite_hidden=document.getElementById('quantite_hidden').value ?

Les valeurs sont elles correctement récupérer ? As tu essayé de faire un alert("document.getElementById('quantite_hidden').value"); pour en être sur ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 37 Messages

04 avr. 2008, 11:13

J'ai suivi tes conseils, j'ai refait une fonction plus simple.Je n'arrive pas à récupérer toutes les quantités passées dans le input de type hidden (correspondants à chaque produit).Je récupère uniquement la valeur de la première quantité qui correspond à un produit, donc le test sur la quantité fonctionne seulement pour le premier produit affiché et pas pour les autres.

Code : Tout sélectionner

<script> function saisie() { var quantite=document.getElementById('quantite').value; var quantite_hidden=document.getElementById('quantite_hidden').value; if(quantite>quantite_hidden) { alert("La quantité saisie est supérieure à celle commandée"); return false; } } </script> <form name="formulaire" action="traitement.php" method="post" onsubmit="return saisie();"> <?php //mon formulaire //boucle while pour afficher echo'<input size="5" type="text" name="quantite['.$id_produit.']" value="'.$quantite.'" id="quantite" />' echo'<input type="hidden" name="quantite_hidden['.$id_produit.']" value="'.$quantite.'" id="quantite_hidden" />'; echo'<input type="checkbox" name="id_produit[]" value="'.$id_produit.'" id="id_produit" />'; echo'<input type="submit" name="retour" value="Valider la demande de retour" />'; ?> </form>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 avr. 2008, 11:29

C'est normal, il ne fallait pas retirer la boucle for() mais simplement mentionner la boucle while pour afficher les champs ;)

Ton problème vient du fait qu'il te faut comparer le champ quantite_hidden d'une ligne au champ quantite de cette même ligne. A noter qu'avec la boucle, tes attributs id sensés être unique, sont identique pour chaque groupe de champs et donc totalement faux. Du coup tes getElementById('quantite') n'ont aucun sens non plus...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 37 Messages

04 avr. 2008, 12:05

Je dois donc récupérer les valeurs de mes input de cette façon :

Code : Tout sélectionner

var quantite=document.formualire.quantite.value; var quantite_hidden=document.formulaire.quantite_hidden.value;
Mais ensuite comment je dois construire ma boucle for en javascript ? J'arrive à le faire en php avec une foreach sur l'id_produit puis en récuperant un truc du style $quantite=proteger($_POST['quantite'][$id_produit]); mais en javascript...