Page 1 sur 1

autosubmit et confirmation d'un select

Posté : 13 juin 2005, 17:14
par guy
Bonjour
j'ai un formulaire comme ceci
<form action="payement_suite.php" method="post" name="payement">
					<select name="methode">
					<option value="liquide">liquide</option>
					<option value="virement">virement</option>
					<option value="paypal">paypal</option>
					<option value="carte">Carte banquaire</option>
					<option value="visa">Visa</option>
					</select>
					<input type="hidden" name="num" value="<?php echo "$num"; ?>" />
</form>
je souhaiterais que lorsque mon utilisateur selectionne un des choix
1 le formulaire soit automatiquement posté
2 avoir une boite de confirmation qui me rapelle le choix effectué du style
Est te vous sur de choissir visa ?
et que ensuite le formulaire soit posté

l'option 2 est bien entendu celle que je recherche le plus la 1 etant une methode de replis en cas d'impossibilité de la 1
;)
merci
Guy

Posté : 13 juin 2005, 17:30
par robined
tu fais une fonction javascript qui validera ton formulaire
Cela peut etre du style:

Pour ta liste:

Code : Tout sélectionner

<select name="methode" onChange="validation(this.value)">
et ta fonction que tu insere dans tes balises head:

Code : Tout sélectionner

function validation(valeur) { document.payement.num.value='valeur'; document.payement.submit(); }

Posté : 13 juin 2005, 17:32
par Cyrano
<form action="payement_suite.php" method="post" name="payement">
  <select name="methode" onchange="if(this.value != -1){confirm('Vous souhaitez bien régler par\n'+ this.value);this.submit();}">
  <option value="-1">Mode de paiement</option>
  <option value="liquide">liquide</option>
  <option value="virement">virement</option>
  <option value="paypal">paypal</option>
  <option value="carte">Carte banquaire</option>
  <option value="visa">Visa</option>
  </select>
  <input type="hidden" name="num" value="<?php echo "$num";  ?>" />
  <input type="submit" name="envoi" style="display: none" />
</form>

Posté : 13 juin 2005, 17:40
par guy
merci de la reponse rapidemais...
j'ai bien la boite de confirmation mais le formulaire n'est pas envoyé meme si je clique sur ok
je cherche l'erreur mais mon niveau de javascript est si bas que je trouve pas.
j'ai l'erreur suivante dans la console javascript:

Code : Tout sélectionner

Erreur : this.submit is not a function
Guy

Posté : 13 juin 2005, 17:52
par Cyrano
TU ne l'as peut-être pas remarqué, j'ai ajouté un input type submit en fin de formulaire avec un style display:none pour qu'il ne change pas ton interface et n'apparaisse donc pas. C'est sur ce bouton que la fonction va agir pour autant qu'il soit présent.

Posté : 13 juin 2005, 18:01
par guy
sisi j'ai remarqué ;)
mais cela ne marchat pas pour autant
j'ai tenté de faire fonctionner le srcipt tout de meme en ajoutant la fonction submit de Robined au paravent
mais la c'est le contraire si je clique sur annuler il envoye les données quand meme :roll:
<script>
					function submit(valeur)
{
    document.payement.num.value='valeur';
    document.payement.submit();
}
</script>
					<form action="payement_suite.php" method="post" name="payement">
  <select name="methode" onchange="if(this.value != -1){confirm('Vous souhaitez bien régler par\n'+ this.value);submit();}">
  <option value="-1">Mode de paiement</option>
  <option value="liquide">liquide</option>
  <option value="virement">virement</option>
  <option value="paypal">paypal</option>
  <option value="carte">Carte banquaire</option>
  <option value="visa">Visa</option>
  </select>
  <input type="hidden" name="num" value="<?php echo "$num";  ?>" />
  <input type="submit" name="envoi" style="display: none" />
</form>
question subsidiaire je voudrait aussi qu'il m'affiche dans la boite de confirmation la valeur du champs caché num
pour avoir dans la boite de confirmation:
vous shouhaiter regler le facture XXX par visa
merci
Guy

Posté : 13 juin 2005, 18:24
par Cyrano
question subsidiaire je voudrait aussi qu'il m'affiche dans la boite de confirmation la valeur du champs caché num
pour avoir dans la boite de confirmation
As-tu pris le temps de regarder le dode que j'ai mis et comment j'ai ajouté le texte de la boite de dialogue ?

Code revu et corrigé avec numéro de facture en plus:
<form action="payement_suite.php" id="payement" method="post" name="payement">
  <select name="methode" onchange="if(this.value != -1){confirm('Vous souhaitez bien régler votre facture numéro '+ forms['payement'].elements['num'].value +' par\n'+ this.value);forms['payement'].submit();}">
  <option value="-1">Mode de paiement</option>
  <option value="liquide">liquide</option>
  <option value="virement">virement</option>
  <option value="paypal">paypal</option>
  <option value="carte">Carte banquaire</option>
  <option value="visa">Visa</option>
  </select>
  <input type="hidden" name="num" id="num" value="12345679" />
  <input type="submit" name="envoi" style="display: none" />
</form>
Et testé aussi. Tu pourras remplacer le numéro que j'ai mis en dur dans le champ caché de numéro de facture.

Note aussi que j'ai ajouté des attributs id dans certains champs, c'est voulu et nécessaire.

Posté : 13 juin 2005, 18:37
par guy
j'ai fait un copie colle de ton code et ca marche bien pour la boite de dialogue mais si je clique sur annuler le formulaire est posté totu de meme !
desolé de d'embeter avec ca mais je ne comprend rien a la logique du javascript.
:(
promis je vais m'y mettre.
Guy

Posté : 13 juin 2005, 19:05
par Cyrano
Oki, on va modifier un poil la balise select:
<select name="methode" onchange="if(this.value != -1){if(confirm('Vous souhaitez bien régler votre facture numéro '+ forms['payement'].elements['num'].value +' par\n'+ this.value)){forms['payement'].submit();}else{return false}}">

Posté : 13 juin 2005, 20:51
par robined
J'avais pas compris que tu voulais le confirm de préference,

ca donne:

Pour ta liste:

Code : Tout sélectionner

<select name="methode" onChange="validation(this.value)">
et ta fonction que tu insere dans tes balises head:

Code : Tout sélectionner

function validation(valeur) { document.payement.num.value='valeur'; if(confirm("Etes-vous sur de vouloir régler par "+valeur)) document.payement.submit(); }