Evenement lié au bouton submit

Signaler
Messages postés
107
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
20 février 2008
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour tout le monde,

J'aurais besoin de votre aide.
Je cherche à comprendre pourquoi le bouton submit n'execute pas la fonction submit() du formulaire, lors du click ?

Je voudrais savoir comment il retroune le formulaire.

Merci de votre aide.

Manu

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,

    tu ne dois pas faire les choses comme il faut.
    mais sans billes ? comment te dire ce qui ne va pas ?

    le principe général quand même :

    <form action="page  à appeler"
                onsubmit="javascript possible (**) " ...>
       ...les champs de saisie utiles....
       <!-- pas de click : en général, c'est parfaitement inutile -->
    </form>

    (**)  en général, ce sera un truc du style    onsubmit="return(controle());"
    controle, la function retournera true pour envoyer le formulaire,
       ou false ( en cas d'erreur par exemple ) pour ne pas le faire.

<hr /> Cordialement Bul [mon Site] [M'écrire]<hr />je sias bien que généralement c'est absurde de généraliser.
Messages postés
107
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
20 février 2008

Merci de ta réactivitée ;)

Mais je n'ai toujours pas saisie. Alors je réexplique mon problème :
J'ai un javascript qui modifie la fonction submit() du formulaire, pour ensuite faire le traitement souhaité.

   function mySubmit() {}

   document.forms[0].submit = mySubmit;

Au niveau de mon code html, j'ai juste :

   <form action="maPage.aspx" id="namePage">
      
   </form>

Et donc en debuggant, il ne passe jamais dans ma fonction, et donc je me demandais comment le bouton submit soumettait le formulaire (est ce qu'il fait un document.forms[0].submit() ou pas ??)

De plus j'ai un autre souci, c'est que sous firefox il me génère une erreur javascript.

Manu
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
pourquoi un submit() en javascript ?
    le click sur l'input submit enverra le formulaire tout seul.

>>il ne passe jamais dans ma fonction,

    quelle fonction ? où l'appelle-tu ? je ne vois rien de tout cela !

je vais me repeter  ( tu n'as probablement pas lu... )

function controle()
{   if erreur return false; else return true;    }

<form action="maPage.aspx" onsubmit="return(controle());">
    ... les champs de saisie ...
    
</form>




<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>, c'est que sous firefox il me génère une erreur javascript.
    sauf cas particuliers, probablement aussi avec IE








o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o 
| Avec | et mieux : <label style="color: rgb(0, 128, 0);">Télécharger</label> | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">FireFox</label> |regarder la "console d'erreurs" | FireBug
| | Outils / Console d'erreurs | | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">Internet Explorer</label>|activer le deboggage : utils/options Ile Debogger IE | 
| | dans la liste, sous "Navigation" : décocher | | 
| | ° Afficher une notification de chaque erreur de script | | 
| | ° Désactiver le débogage de Scripts (autres applications)| | 
| | ° Désactiver le débogage de Scripts (Internet Explorer) | | 
o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o










<hr />



Cordialement    Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
et pour l'erreur, j'ai oublié de préciser :


sans billes, sans un petit bout de code quoi... comment te dire ce qui ne va pas ?




<hr />



Cordialement        Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut

la reponse de bulltez fera surement l'affaire, suffit de prendre la peine de la lire

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Messages postés
107
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
20 février 2008

Ok, voilà j'ai trouvé comment faire pour le premier point.

Je suis mal exprimé par rapport à ma demande en fait...
Voilà je suis en train de faire un script qui bloque la soumission des formulaires suite à une première soumission.

Voici le script :

var

myForm = document.forms[0];
var bSubmitting false;oldOnSubmit myForm.onsubmit;

oldSubmit = myForm.submit;

function newOnSubmit() {

         if(oldOnSubmit) // Dans le cas ou dans la balise form il n'y a pas de OnSubmit         {

               if (!bSubmitting && oldOnSubmit())  // On fait le onSubmit et on test si le formulaire n'est pas soumis               {

                     bSubmitting =

true;

                     return
true;               }

               else               {

                     return
false;                }

         }

         else         {

                  if (!bSubmitting)                   {

                        return
true;                   }

                   else                  {

                        return
false;                  }

         }

}

function newSubmit() {

      if(oldOnSubmit) // Dans le cas ou il est passé dans le oldOnSubmit on fait l'ancien submit = form.submit      {

            oldSubmit(); // Il me genère une exception sous FireFox

      }

      else      {

            if (!bSubmitting) // ici la fonction form.submit est appelé            {

                  bSubmitting =

true;                  oldSubmit(); // Il me genère une exception sous FireFox

            }

      }

}

if (oldSubmit) {// On place le nouveau submit dans le submit      myForm.submit = newSubmit;

}

myForm.onsubmit = newOnSubmit;

Au niveau du HTML, je ne mets pas le code, car celui ci diffère selon les pages. Et je dois me démerder pour que celà fonctionne sans changer les pages HML. D'ou le submit et le onSubmit.

Ce script fonctionne très bien sous IE mais ne fonctionne pas sous FireFox il me génère une erreur. Pour ce qui est du debugger sous IE, je l'avais activé et il ne me génère aucune erreur.

Sous FireFox il me génère une exception :

[Exception... "Illegal operation on WrappedNative prototype object"  nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)"  location: "JS frame :: mon_script :: newSubmit :: line 110"  data: no]
mon_script
Line 110

En faisant des recherche il faudrait overridé le submit du genre :

myForm.submit = newSubmit;

myForm.onsubmit = newOnSubmit;

// capture the onsubmit event on all formswindow.addEventListener(

'submit', newSubmit,
true);window.addEventListener(

'onsubmit', newOnSubmit,
true);

// If a script calls someForm.submit(), the onsubmit event does not fire,

// so we need to redefine the submit method of the HTMLFormElement class.HTMLFormElement.prototype.oldSubmit = HTMLFormElement.prototype.submit;

HTMLFormElement.prototype.submit = newSubmit;

HTMLFormElement.prototype.oldOnSubmit = HTMLFormElement.prototype.onsubmit;

HTMLFormElement.prototype.onsubmit = newOnSubmit;

Mais je n'arrive pas à implémenter ce code dans mon code...

Ai je des erreurs ?

Manu
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>Ai je des erreurs ?







o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o 
| Avec | et mieux : <label>Télécharger</label> | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label>FireFox</label> |regarder la "console d'erreurs" | FireBug
| | Outils / Console d'erreurs | | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label>Internet Explorer</label>|activer le deboggage : utils/options Ile Debogger IE | 
| | dans la liste, sous "Navigation" : décocher | | 
| | ° Afficher une notification de chaque erreur de script | | 
| | ° Désactiver le débogage de Scripts (autres applications)| | 
| | ° Désactiver le débogage de Scripts (Internet Explorer) | | 
o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o










<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />