Confirm si le formulaire est modifié et non envoyé

Eléphanteau du PHP | 36 Messages

03 avr. 2007, 14:24

Bonjour à tous.


Je cherche un moyen d'afficher un message de confirmation, lors qu'un visiteur quitte ma page de formulaire sans la soumettre.

J'essaye d'abord d'afficher un message lorsque je clique sur fermer. Le message apparait. Si je répond OK le formulaire est envoyé, mais si je repond Annuler j'aimerai être redirigé vers une autre page sans soumettre le formulaire. Voici mon code

Code : Tout sélectionner

<html><head><title>Test</title> <script type="text/javascript"> <!-- function confirmation() { var x = confirm("Voulez-vous enregistrer votre formulaire avant de quitter ? "); return x; } //--> </script> </head><body > <form name="formulaire_test" action=""> <input type="text" size="40" name="saisie"> <input type="submit" value="Enregistrer"> <input type="submit" onclick="return confirmation()" value="Fermer"> </form> </body></html>
Si quelqu'un pouvait m'aider ??

Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 avr. 2007, 14:44

Salut,
Limite un formulaire à un seul bouton de type "submit" et préfère donc un autre de type "button" avec la même proporiété javascript.
<html><head><title>Test</title>
<script type="text/javascript">
<!--
function confirmation() {
	if(confirm("Voulez-vous enregistrer votre formulaire avant de quitter ?  "))
		document.formulaire_test.submit();
	else 
		window.location.replace( "url_page_de_redirection");

}
//-->
</script>
</head><body >
<form name="formulaire_test" action="">
<input type="text" size="40" name="saisie">
<input type="submit" value="Enregistrer">
<input type="button" onclick="confirmation()" value="Fermer">
</form>
</body></html>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 36 Messages

03 avr. 2007, 14:55

Merci, c'est exactement cela que je cherche. Ce forum est vraiment une mine d'infos. Sans vouloir abuser, est-il possible d'avoir se fonctionnement lorsque je clique sur un lien qui se trouve dans une autre frame.

J'ai essayé avec l'évènement OnUnLoad dans la balise BODY, mais cela se mord la queue.

De plus j'aimerai afficher ce message, seulement si mon champ saisi a changé

Cordialement

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 avr. 2007, 15:32

Merci, c'est exactement cela que je cherche. Ce forum est vraiment une mine d'infos. Sans vouloir abuser, est-il possible d'avoir se fonctionnement lorsque je clique sur un lien qui se trouve dans une autre frame.
Donc sur un "onclick"... pour jouer avec les frames tu peux regarder CECI (comme ça pas possible d'en dire plus).
De plus j'aimerai afficher ce message, seulement si mon champ saisi a changé
Par rapport à quel moment (valeur de chargement, saisie manuelle...)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 36 Messages

04 avr. 2007, 14:47

Merci pour le lien sur les frames. C'est clair pour moi maintenant la gestion des frames.


Lorsque je charge mon formulaire, mes champs ont une valeur par défaut.
Si au moins une de ces valeurs est changé je souhaite executer la fonction confirmation().

Si aucun changement, je ne souhaite pas utiliser la fonction confirmation().

Merci encore.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 avr. 2007, 15:06

Dans ce cas sur chaque champ (si possible) tu places l'événement "onchange" qui changerai une variable globale pour signaler un changement:
<balise onchange="change = true;">
La fonction devient :
<script type="text/javascript">
<!--
var change = false;
function confirmation() 
{
    if (change)
    {
        if(confirm( .....
     }
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 36 Messages

15 avr. 2007, 00:13

Merci encore pour ton aide. Cela fonctionne exactement comme je le souhaite.