Dur Comme Faire

Aller au contenu | Aller au menu | Aller à la recherche

Empêcher la soumission multiple d'un formulaire

Lorsqu'on utilise des formulaires, on est souvent confronté au problème de la soumission multiple. Pour éviter cela il suffit d'utiliser la méthode JavaScript suivante :

function soumettreUneSeuleFois(formulaire) {
  if (formulaire.elements['submit']  != null) {
    if (formulaire.elements['submit'].disabled) {
      return false;
    }
    formulaire.elements['submit'].disabled = true;
    formulaire.elements['submit'].value = 'Veuillez patienter';
  }
  return true;
}

Quant au code HTML du formulaire, il sera le suivant :

<form action="traitement.php" method="post"
         onsubmit="return soumettreUneSeuleFois(this);">
  <fieldset>
    <input name="champ" type="text" />
    <input type="submit" name="submit" value="soumettre" />
  </fieldset>
</form>

Ainsi lorsque le formulaire sera soumis, que ça soit par l'appui sur la touché Entrée ou bien par un clic sur le bouton de soumission, ce dernier sera désactivé et son texte sera remplacé par un message d'attente.

jeudi 30 décembre 2004 à 13h55 - Développement Web Fil de syndication

Rétroliens

Aucun rétrolien pour le moment.

Les rétroliens pour ce billet sont fermés.

Commentaires

Gravatar de Eric Daspet

Et moi de ne toujours pas comprendre pourquoi les navigateurs ne le font pas par d?faut, c'est leur boulot apr?s tout : ?viter d'envoyer plusieurs fois la m?me requ?te en attendant la r?ponse.

Eric Daspet le jeudi 30 décembre 2004 à 19h05 Icone du permalien

Gravatar de solo

Sympa le script :)

solo le jeudi 30 décembre 2004 à 22h52 Icone du permalien

Gravatar de ZIKoS

mais si le javascript est desactiv? ?
Bon moi et mes betises on part au P?rou.

ZIKoS le lundi 3 janvier 2005 à 20h27 Icone du permalien

Gravatar de JMF

ZIKoS> Dans ce cas le formulaire a un fonctionnement normal. C'est justement l'int?r?t de ce type d'impl?mentation. Cela am?liore l'exp?rience utilisateur comme disent nos amis de la communication si le JavaScript est pr?sent et se d?grade parfaitement bien dans le cas contraire.

JMF le mardi 4 janvier 2005 à 10h11 Icone du permalien

Gravatar de dash

Attention ! La methode est traitre.
Si la fonction soumettreUneSeuleFois() desactive le bouton "submit" lors de la validation du formulaire, la variable $_REQUEST['submit'] / $_POST['submit'] n'existera plus ! Donc, ca n'aura plus aucun sens de faire un test sur cette valeur. Par exemple sur des formulaires plus complexes (comme le formulaire de commentaire de ce blog).
Il faut y penser. Je me suis fait surprendre sur mon blog...
Solution : utiliser un champ hidden (par exemple "copy_submit") qui servira de temoin en cas de besoin :)

dash le mercredi 26 janvier 2005 à 23h07 Icone du permalien

Gravatar de Archaoniro

Hello,

Important, quelqu'un sait s'il existe une solution pour que le bouton submit une fois d?sactiv? (disabled='true') soit r?activ? ?
J'ai essay? avec disabled='false' mais ?a ne fonctionne pas...

Merci beaucoup

Archaoniro le jeudi 9 juin 2005 à 01h48 Icone du permalien

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.

XHTML - CSS - DotClear - Technorati

Les billets de ce blog sont sous licence Creative Commons