Généraliser une action sur une page entière

Signaler
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour,

Lorsque je crée un formulaire, j'ajoute toujours ce morceau de javascript dans la balise <form> :

onSubmit="post.disabled='true';"

Ceci permet au bouton de validation (post) d'être désactivé à la soumission du formulaire.

Ma question est donc simple, je voudrais savoir s'il existe un moyen de faire cela avec un script en "haut de page" sans avoir à placer mon code dans chaque balise <form>.

Merci.

19 réponses

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

    réalisable...
   
    window.onload=function() { traitement quand la page est chargée }

    dans ce traitement :

    document.forms.length donne le nombre de formulaires
            et
document.forms[indice]        accède à chaque formulaire
             ensuite soit
                    _ utiliser le name du submit, ou mieux ( car si plusieurs
                         bouton submit dans le formulaire ? ) regarder tous
                         les éléments du formulaire et traiter les input submit
                   _ ajouter la fonction onsubmit au formulaire
                   ...


    mais... que fait-on si un contrôle préalable est requis avant l'envoi ?
          on a un truc du style : <form ... onsubmit="return(controle());"...>
        on ne peux pas,là, invalider le bouton submit avant
            le retour de la function controle...   
            je ne vois pas comment faire, enfin, pas sans plus de réflexion.

<hr />


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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

Merci beaucoup pour tes explications.

Malheureusement je ne suis pas très calé en javascript.

J'ai essayé cela sans succès :

window.onload = function()
{
 var nb_forms = document.forms.length;
 
 for(var i = 0; i < nb_forms; i++)
 {
  document.forms[i].post.submit.disabled='true';
 }
}
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
pourquoi ne pas faire comme tu nous le montrait...
    appliquer à toutes les form ?
    document.forms[i].post.disabled='true';
    pas de .submit dans cette histoire.



<hr /> Cordialement Bul [mon Site] [M'écrire]<hr />n'empêche que je vais me pencher sur un truc plus général
( si fonction sur submit ou pas )
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
au fait... si tu fais ça, ça va invalider les boutons submit, rien de plus

    window.onload=function()
    {    for ( var f=0;f<document.forms.length;f++ )
        {  document.forms[f].poster.onclick=function()
            {   this.disabled=true;
            }
        }
    }

    ça suppose    _ que tous les boutons submit aient la name="poster"
                          _ qu'ils n'ont pas déjà un onclick
                          _ que, s'il y a un contrôle dans le onsubmit, en cas de non envoi,
                                il faut rendre accessible ce bouton submit
                          _ ...

    il faudrait aller un peu plus loin.
        ne pas utiliser le name du bouton
        si une fonction existe déjà, la conserver
              je ne sais plus qui avait donner un exemple pour ça
              je ne retrouve pas, et je n'ai pas noté.
        ...

<hr />


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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

En fait je voudrais que chaque bouton avec le nom "post" de chaque formulaire soit desactivé à la soumission.

Mais rien ne marche :-(
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
si, la fonction que je te proposes fonctionne.
tu ne fais pas la même chose.


( je la généraliserais, il me reste 1 point à résoudre,
    mais telle quelle elle marche )
et dire que "rien ne marche"... ça aide pour aider !
<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
32
>> avec le nom "post"


                c'est peut-être uniquement ça ????
je me cite ?    
ça suppose    _ que tous les boutons submit aient la name="poster"
parce que :
    ... {  document.forms[f].poster.onclick=function() ...
j'éviterais un name comme post ( connu du javascript, du html... )


<hr />



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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

Vraiment desolé, tu as raison c'est une rreur de ma part d'inattention...
Alors il reste plus qu'a faire en sorte que ça se descative à la soumission du formulaire car actuellement on clique dessus, ça se desactive mais le formulaire n'est pas envoyé.

Merci beaucoup pour ton aide.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
c'est un autre problème... ailleurs.
j'ai quasi terminé le truc généralisé.
<hr />


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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

Merci beaucoup :)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
j'ai mis dans les sources : http://www.javascriptfr.com/code.aspx?ID=43014
si ce n'est pas sucré, ça pourrait servir à d'autres.
<hr />


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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

Sous internet explorer 6, le bouton se désactive juste mais le formulaire n'est pas envoyé :-S
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
euh... avec mon exemple ?    sinon, un extrait du code ?
<hr />


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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

Voici le morceau de code que j'utilise :

<form action="test.html" method="post" name="formulary">
Valider
</form>

Avec bien sur le fichier javascript inclut dans la page.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>

    un button de type submit ça n'existe pas.
       et même si ça existait, le script recherche un

   évites les mots connus de html,javascript (post), un jour ou
         l'autre ça te poseras des problèmes


essayes donc avec



<hr />



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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

Si si cette balise existe : http://www.startyourdev.com/HTML/Balise-BUTTON.html

Sinon j'ai essayé avec un "input" avec le nom "poster" et pourtant, c'est toujours la même chose, le bouton se désactive mais ne formulaire n'est pas envoyé.

Ton script est fait pour ne pas bloquer l'envoi des formulaires ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
   je n'ai pas dit que la balise button n'existait pas.
j'ai dit que type= "submit" pour une balise button n'existait pas.
    et si je me trompe : j'ai dit aussi... que le script cherchait

>>mais ne formulaire n'est pas envoyé.
        il te reste une (des) erreur(s). 
            peut-être ailleurs ?
            mais sans plus de données, je ne saurais répondre
                     ( le formulaire est-il envoyé sans le script ? )

    au fait ... :







|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷| 
| 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) | | 
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|





>>Ton script est fait pour ne pas bloquer l'envoi des formulaires ?
    ? tu l'as , donc tu vois.


                il n'agit que sur le onclick des





<hr />



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



<hr />
Messages postés
56
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
18 avril 2008

<form name="F1"
  onsubmit="alert('onsubmit du form F1');"
  action="test.html">

J'ai essayé en utilisant exclusivement ton zip en modifiant juste l'action du formulaire dans ta page html et rien à faire, ça ne marche pas, l'action n'est pas executée...

En ce qui concerne l'élément "button", sur le lien que je t'ai donné, ils disent que l'attrubut "type" peut etre de type "submit".
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
crotte de bique !  dieu me tripote !
je viens de tenter, et ... le chargement de la page ne se fait pas !

remplaces dans le .js
                les 2  this.disabled=true;
                par     this.style.display="none";

( je vais mettre à jour la source )

alors ça... disabled invalide le chargement ?
    pas si c'est du javascript dans l'action ?
    faut qu'on m'explique !
    il faut probablement un setTimeout avant de mettre disabled=true ?

 
    je te soupçonnais de je ne sais quoi...
            et je n'avais pas essayé de charger une nouvelle page
             persuadé que si le javascript fonctionnait dasn l'action ...

<hr />


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



<hr />