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

porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008 - 5 juin 2007 à 13:03
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 7 juin 2007 à 13:31
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 juin 2007 à 14:11
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 />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
5 juin 2007 à 14:30
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';
 }
}
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 juin 2007 à 17:22
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 )
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juin 2007 à 06:54
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 />
0

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

Posez votre question
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
6 juin 2007 à 12:44
En fait je voudrais que chaque bouton avec le nom "post" de chaque formulaire soit desactivé à la soumission.

Mais rien ne marche :-(
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juin 2007 à 12:50
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 />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juin 2007 à 12:54
>> 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 />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
6 juin 2007 à 13:19
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juin 2007 à 13:36
c'est un autre problème... ailleurs.
j'ai quasi terminé le truc généralisé.
<hr />


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



<hr />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
6 juin 2007 à 13:39
Merci beaucoup :)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juin 2007 à 15:11
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 />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
6 juin 2007 à 16:44
Sous internet explorer 6, le bouton se désactive juste mais le formulaire n'est pas envoyé :-S
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
6 juin 2007 à 16:47
euh... avec mon exemple ?    sinon, un extrait du code ?
<hr />


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



<hr />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
6 juin 2007 à 17:19
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 juin 2007 à 05:55
>>

    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 />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
7 juin 2007 à 09:40
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 ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 juin 2007 à 10:05
   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 />
0
porciner Messages postés 56 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 18 avril 2008
7 juin 2007 à 10:51
<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".
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 juin 2007 à 13:31
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 />
0
Rejoignez-nous