Page 1 sur 1

Désactiver un bouton submit à l'envoi du formulaire

Posté : 27 août 2006, 15:51
par finipe
Bonjour,

Tout est dans le titre : j'aimerais pouvoir désactiver un bouton submit une fois qu'il a été cliqué, afin d'éviter notamment des doubles posts.

Je pensais que ce serait simple, mais en fait j'ai essayé pas mal de solutions et rien ne marche. Quelqu'un connaît-il la solution ?

Merci de votre aide !

Posté : 27 août 2006, 16:07
par albat
à main levée, sans tester, je te propose quelque chose du genre :

Code : Tout sélectionner

<input type="button" onclick="this.disabled='disabled';form.submit();" />

Posté : 28 août 2006, 03:28
par finipe
Ça fait partie des solutions que j'ai essayé, mais il se produit qqchose que je ne m'explique pas quand je procède comme ça : le formulaire est bien envoyé (quand je réactualise, il m'affiche le message "Cliquez sur Recommencer pour renvoyer les informations etc."), mais je ne récupère pas les valeurs.

De plus, j'ai un javascript qui vérifie que certains champs sont obligatoires, placé sur onSubmit dans la balise <form>, mais quand j'utilise le code ci-dessus, cette vérification ne fonctionne plus (alors qu'avec un bouton de type submit, ça roule tout seul).

Je tourne en bourrique avec ce problème, c'est agaçant :lol:

Posté : 28 août 2006, 11:08
par Ryle
L'action onSubmit="" d'un formulaire n'est déclenchée que lors de la soumission du formulaire via un bouton submit ou une image. La fonction formulaire.submit() ne l'exécute pas et il te faut donc appeller ta fonction de contrôle avant cette commande (ou la lancer depuis ta fonction de contrôle) :)

Par ailleurs, un champ désactivé n'est pas envoyé. Si tu te bases sur la présence du nom du bouton de soumission pour exécuter ton traitement, il est normal que celui-ci ne se fasse plus :)

Posté : 28 août 2006, 13:32
par finipe
C'est vrai que je détecte l'envoi du formulaire avec un if(isset($_POST['valid'])) ... Je vais essayer autre chose alors : )

Posté : 28 août 2006, 15:39
par Shrell
L'action onSubmit="" d'un formulaire n'est déclenchée que lors de la soumission du formulaire via un bouton submit ou une image
Ah bon? J'ai un doute là, je dirais plutot qu'il vaut mieux utiliser le onsubmit sur le formulaire que le onclick sur le submit, parce qu'en cas de validation par la touche Entrée, le onsubmit sera pris en compte et pas le onclick.
Pour ton probleme de if(isset($_POST['valid'])), teste un autre champ que tu as rendu obligatoire, ou bien essaie if(is_array($_POST)) (je ne suis pas sur de ca, je dirais que $_POST est un tableau par défaut et qu'il est défini, que des données aient été envoyées ou non... à voir donc)

Posté : 28 août 2006, 16:03
par Ryle
Ah bon? J'ai un doute là, je dirais plutot qu'il vaut mieux utiliser le onsubmit sur le formulaire que le onclick sur le submit, parce qu'en cas de validation par la touche Entrée, le onsubmit sera pris en compte et pas le onclick.
Vi, en effet, mais dans l'exemple il s'agit d'un input de type "button" pour soumettre le formulaire à la place d'un input de type "submit". La touche entrée n'a alors aucun effet sur le formulaire (sauf si le focus est sur le bouton, ce qui déclencherait le onClick de toute façon :))

Il faut juste savoir que la fonction javascript submit() ne déclenche pas l'action onSubmit du formulaire :)
Après, c'est à chacun de voir s'il utilise juste des boutons "submit" ou s'il utilise également du javascript (pour actualiser un formulaire sans perdre de données lors d'un choix dans une combo par exemple)

Posté : 29 août 2006, 05:46
par finipe
Problème résolu : c'est parce que je m'évertuais à détecter l'envoi du formulaire avec isset($_POST['valid']).

Merci ! : )