reset manuel d'1 formulaire

reset manuel d'1 formulaire - HTML/CSS - Programmation

Marsh Posté le 16-06-2006 à 21:21:35    

hi!
 
j'voulais afficher une boite de dialogue confirm lors d'un clic sur le Reset d'un formulaire
 
mais je ne sais pas comment court circuiter la fonction de reset pour intercaler ma fontion.
 
c'est possible?
 
 
à défaut, j ai remplacé le reset par un bouton classique et j'appelle ma propre fonction de reset sur un onclick,
oui mais voila, je n'arrive pas à réinitialiser les champs en faisant monform.montexte.value=""
qu'est qu il faut faire pour réinitialiser les champs à la mano?


Message édité par nioubizz le 16-06-2006 à 21:54:05
Reply

Marsh Posté le 16-06-2006 à 21:21:35   

Reply

Marsh Posté le 16-06-2006 à 22:39:59    

tiens, j'ai jamais testé... mais théoriquement, tu peut utiliser un bouton reset, avec:

Code :
  1. onclick="javascript: return !window.confirm('Confirmez-vous la réinitialisation?');"


Sinon, c'est document.monform.monchamps.value.

Reply

Marsh Posté le 16-06-2006 à 23:05:54    

Une solution actuelle et propre (clin d'oeil au code de nargy) :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  3. <head>
  4. <title>Test</title>
  5. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
  6. <script type="text/javascript">
  7.  window.onload = function () {
  8.   confirmReset();
  9.  }
  10.  function confirmReset() {
  11.   var inputs = document.getElementsByTagName('input');
  12.   for (var i=0 ; i<inputs.length ; i++)
  13.   {
  14.    if (inputs[i].type == "reset" )
  15.    {
  16.     inputs[i].onclick = function() {
  17.      return confirm("Confirmation ?" );
  18.     }
  19.    }
  20.   }
  21.  }
  22. </script>
  23. </head>
  24. <body>
  25. <h1>Confirmation reset</h1>
  26. <form>
  27.  <input type="text" />
  28.  <input type="reset" />
  29. </form>
  30. </body>
  31. </html>

Reply

Marsh Posté le 16-06-2006 à 23:29:06    

En fait, j'avais de toutes façon fait une erreur:
!window.confirm
 
...et mon code reste beaucoup plus léger ;)
 
Tant qu'a faire, à ce propos, mettre le script dans un fichier séparé.

Reply

Marsh Posté le 16-06-2006 à 23:35:37    

nargy a écrit :

En fait, j'avais de toutes façon fait une erreur:
!window.confirm
 
...et mon code reste beaucoup plus léger ;)
 
Tant qu'a faire, à ce propos, mettre le script dans un fichier séparé.


 
ouais mais ton JS a quelques défauts :  
javascript: == ca sert à rien de le rajouter, lors d'un appel à un évenement sur un élément on sait très bien que c'est du JS et pas du caca
ensuite afbilou rajoute le JS dynamiquement, comme ça, pas besoin de le mettre à chaque fois sur le bouton et si tu n'as pas JS activé c'est pas un soucis (quoi que tu me diras, dans ton cas ça ne pose pas de problème [:petrus75];

Reply

Marsh Posté le 16-06-2006 à 23:58:43    

Pas plus léger ... plus court ! Et encore ... plus court ... mais ... quand même BIEN plus long à mettre en place puisqu'il te faut editer chaque element reset dans chaque fichier du site :s
 
Et puis ... mettre à jour ton code "plus léger" est un enfer sans nom ... :s

Reply

Marsh Posté le 18-06-2006 à 17:32:37    

nargy a écrit :

tiens, j'ai jamais testé... mais théoriquement, tu peut utiliser un bouton reset, avec:

Code :
  1. onclick="javascript: return window.confirm('Confirmez-vous la réinitialisation?');"


Sinon, c'est document.monform.monchamps.value.


 
ouep pour la syntaxe en fait j avais fait un getelementbyid avant ;)
 
ça etre bien strange: ton onclick fonctionne mais avec un onmouseup ça marche pas!
 
j avais testé aussi en faisant onclick="confirme();" dans le reset
avec

Code :
  1. function confirme() {
  2. return confirm("poursuivre?" );
  3. }


sais pas où est la boulette, mais dans ce dernier cas: ça init le formulaire quelquesoit la réponse... yé fait une boulette?


Message édité par nioubizz le 18-06-2006 à 17:34:19
Reply

Marsh Posté le 18-06-2006 à 17:43:35    

[:ouais2] ouais, tu as oublié le return dans le onclick!!!
 
Pour le onmouseUp, c'est tout à fait normal que ça marche pas. C'est le sur onclick qu'il faut retourner vrai ou faux pour indiquer au navigateur de traiter ou pas l'évènement. Si tu fait sur le mouseUp, tu doit mettre une variable à part avec le résultat du confirm(), et retourner cette variable dans le onclick.
T'a suivi?
 
Edit: la gestion d'évènements javascript ne s'arrête pas à ton code, mais se poursuit dans les autres éléments HTML, il y a une thread qqpart avec des explications plus complètes sur la manière dont les évènements sont gérés dans un navigateur.

Message cité 1 fois
Message édité par nargy le 18-06-2006 à 17:45:38
Reply

Marsh Posté le 18-06-2006 à 17:45:36    

nargy a écrit :

[:ouais2] ouais, tu as oublié le return dans le onclick!!!
 
Pour le onmouseUp, c'est tout à fait normal que ça marche pas. C'est le sur onclick qu'il faut retourner vrai ou faux pour indiquer au navigateur de traiter ou pas l'évènement. Si tu fait sur le mouseUp, tu doit mettre une variable à part avec le résultat du confirm(), et retourner cette variable dans le onclick.
T'a suivi?
 
Edit: la gestion d'évènements javascript ne s'arrête pas à ton code, mais se poursuit dans les autres éléments HTML, il y a une thread qqpart avec des explictions plus complètes sur la manière dont les évènements sont gérés dans un navigateur.


oui pour l oubli du return j ai suivi , pour le onmouseup un peu moins

Reply

Marsh Posté le 18-06-2006 à 17:50:41    

kk
le navigateur traite les évènement dans cet ordre:
onmouseDown, onmouseMove, onmouseUp, onClick, onDblClick
 
À chaque évènement, il y a déjà de base un évènement associé.
Par exemple, pour un bouton reset, c'est sur le onClick qu'est associée l'action de Reset du formulaire.
 
Par contre, le onmouseUp du bouton reset, il n'y a rien d'associé (à part, théoriquement mais c'est pas implémenté il me semble, le changement de bordure du bouton pressé -> relevé).
 
Donc, retourner false dans le onmouseUp ne sert à rien, c'est dan onClick qu'il faut retourner qqchose.
 
Comme mouseUp est appelé avant mouseClick, tu peut ranger le résultat du confirm() dans une variable globale. Puis, le onClick sera appelé juste après le onmouseUp, et tu pourra retourner la valeur de cette variable globale, pour indiquer si oui ou non il faut que le navigateur execute la fonction par défaut associé au bouton.
 
PS: de toutes façon, dans ton cas, c'est le onClick qui t'interesse.


Message édité par nargy le 18-06-2006 à 17:53:19
Reply

Marsh Posté le 18-06-2006 à 17:50:41   

Reply

Marsh Posté le 18-06-2006 à 18:00:48    

ok hyper clair  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed