Forum Clubic

[Javascript] de confirmation de formu... - Modification pour utilisation multiple

Bonjour à tous, dans un formulaire, j’ai envie de demander une confirmation à l’internaute de son action. Je m’explique : Après avoir complété le formulaire et appuyé sur le petit bouton, un message apparait pour demander si l’on est sur de ce que l’on fait.
J’ai réussit le script mais je souhaiterai qu’il fonctionne pour tous les formulaires de la page…
Voici mon code :

function confirm_formu() {
 if (document.change_password.password1.value == "" || document.change_password.password2.value == '') {
  alert('Veuillez compléter les deux champs !');
 } else
 if (document.change_password.password1.value != document.change_password.password2.value) {
  alert('Veuillez mettre la même chose dans les deux champs !');
 } else
 var confirme = confirm('Etes-vous sûr ?');
 if (confirme == true) {
  document.change_password.method = 'post';
  document.change_password.action = 'redir.php';
  document.change_password.submit();
 } else if (confirme == false) {
  alert('Il faut savoir prendre des décisions dans la vie !');
 }
}
<form action="redir.php" method="post" name="change_password"><input type="hidden" name="action" value="change_password" />
<p><label>Nouveau mot de passe : <input type="text" name="password1" /></label><br /><label>Confirmez : <input type="text" name="password2" /></label></p>
<p><input type="button" value="Valider" onClick="confirm_formu()"></p>
</form>

J’ai plusieurs formulaires de ce genre sur la page et c’est assez lourd d’écrire la fonction autant de fois qu’il y a de formulaires en changeant juste le nom du formulaire.
Donc, comment serait-il possible de faire une unique fonction pour tous les formus ?

Merci d’avance… :slight_smile:

Tu t’y prend mal.

Fait un bouton type submit, et utilise l’événement onsubmit associé à la balise form. ex:

<form onsubmit="foo(this);">...<input type="submit" /></form>
...
function foo(form) {
  if ( confirm( "T'es sûr?" ) )
    return true;
  return false;
}

Comme ça ceux qui n’ont pas activé javascript pourront quand même envoyer le formulaire.

Javascript c’est pas automatique!

Hum, c’est la première fois pour moi que je m’aventure dans le javascript et dans les évênements ! Donc j’ai essayé de faire comme tu m’as précisé mais petit problème : que l’on clique sur Ok ou Annuler dans la boite de dialogue, le formulaire est posté dans les 2 cas. Bon il m’a semblé que tu aies oublié un petit “else” alors j’ai testé avec et sans mais sans résultat…

Je te montre mon code :

<script type="text/javascript">
function confirm_formu(form) {
	if (confirm("T'es sûr?"))
  return true;
	else return false;
}
</script>
</head>
<body>
<h2>Changement de votre mot de passe</h2>
<p><?php if (isset($_POST['action'])) echo $_POST['action']; ?></p>
<div id="qr_open1">
<form action="test.php" method="post" onsubmit="confirm_formu(this);"><input type="hidden" name="action" value="change_mail" />
<p><label>Nouveau mail : <input type="text" name="password1" /></label><br /><label>Confirmez : <input type="text" name="password2" /></label></p>
<p><input type="submit" value="Valider"></p>
</form>
</div>

Le petit bout de php est juste là pour voir si le formulaire a été posté ou pas…

Par contre ta remarque m’a embrouillé car sans balise de script, je la met où la fonction ? :lol:

Modifie simplement le onsubmit="confirm_formu(this);" en ceci: onsubmit="return confirm_formu(this);".

Ainsi, le “onsubmit” retourne false quand on clique sur annuler, ce qui stoppe la propagation de l’évènement… En clair, le navigateur n’exécute donc pas le reste des actions à faire quand l’évènement survient. En l’occurence ici, il restait au navigateur l’envoi des données du formulaire.
:slight_smile:

Bon, je sais pas si je suis clair, en fait je ne crois pas l’être, donc si quelqu’un peut mieux expliquer que moi, qu’il ne se gène pas :smiley:

Oh yeah merci à toi Bricomix ! :super:

Hormi le return, je t’ai filé l’exemple. Et ce que tu fais, c’est que tu force le choix de l’utilisateur, que de toute façon sans javascript il passera pas tes tests, braiffe

Non mais c’est juste pour des raisons pratiques, ensuite le PHP se chargera du reste. :jap:
A l’origine j’aurais voullu faire une page spéciale pour demander des confirmations mais j’ai trouvé que un petit message en boite de dialogue serait plus simple.

Bref, merci à vous !