Evenement lié au bouton submit

Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008 - 3 juil. 2007 à 14:11
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 4 juil. 2007 à 10:40
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 juil. 2007 à 15: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.
0
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
3 juil. 2007 à 16:02
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 juil. 2007 à 16:29
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 />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 juil. 2007 à 16:32
>>, 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 />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 juil. 2007 à 16:39
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 />
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 juil. 2007 à 22:16
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
0
Manu94600 Messages postés 107 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 20 février 2008
4 juil. 2007 à 09:14
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 juil. 2007 à 10:40
>>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 />
0
Rejoignez-nous