Problème interpretation chaine [Résolu]

Signaler
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010
-
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010
-
Bonjour à tous,
j'ai un formulaire nommé cnx et le bouton d'envoie est
onClick="envoieForm('cnx');return false;"
Dans la fonction envoieForm il n'est pas possible de faire par exemple
function envoieForm (s_nomForm)
{
document.s_nomForm.submit;
}
car document.s_nomForm est 'undefined'. Y aurait-il une astuce ou il faut alors passer par un document.getElementById.

13 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
alert( document[s_nomForm].length);

le mieux ( ? )


onClick="envoieForm (this.form); return false"

function envoieForm (s_nomForm)
{ alert(s_nomForm);
}
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
Bonjour,

non, id n'est quasi jamais obligatoire

il faut : document.s_nomForm.submit();
( sans préjuger d'autres erreurs ? )
ça devait être dit dans les erreurs
javascript d'ailleurs

[u]mais mettre un onclick + formulaire.submit()
n'est pas la manière standard de faire/u
il faut :

<form ... onsubmit="return (controle());"
action....>
.. les champs du formulaire...

</form>
sans click, sans submit() !!!!
dans controle, on controle les champs
( si nécessaire ) et on retourne false
le formulaire ne sera pas envoyé, il le
sera si on renvoie true


Cordialement [mon Site] [M'écrire] Bul
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
et, vous semblez dire :
>>document.s_nomForm est 'undefined'.
>>envoieForm('cnx')
donc votre formulaire doit
être <form name="cnx"....>
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

Merci de ta réponse.
Je ne connaissais pas la manière standard et c'est vrai que c'est plus
logique. Mais je ne peux pas la mettre en pratique dans ce cas (enfin je suppose) car la fonction envoieForm appelle d'autre fonction dont une qui
se répète avec setTimeout(ouverture d'une modal personnalisé) ce qui envoie le formulaire dès qu'elle commence sans attendre l'appel d'une autre fonction quand l'ouverture est terminé.

Par contre si je fais (mon name est ok)
function envoieForm (s_nomForm)
{
alert(document.s_nomForm.length); //document.s_nomForm est 'undefined'
}
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

document[s_nomForm].length fonctionne impec. Merci de voter aide et de la méthode standard que je ne suis pas parvenu à appliquer cette fois mais qui me sera bien utile dans d'autre cas. Ce n'est pas la première fois que vous me dépannez avec tjs autant de rapidité et de maitrise. Bonne continuation
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
nickel si ça baigne
j'use plutôt de this.form
( on ne fait ni référence à id, ni à name ... )

et si on veux gérer le name, ne vaut-il pas mieux faire
document.forms[s_nomForm] plutôt que document[s_nomForm]
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

Super pour les conseils

Mais si je fais le code que tu m'as donné plus haut j'ai

onClick="envoieForm (this.form); return false"

function envoieForm (s_nomForm)
{ alert(s_nomForm); //s_nomForm 'undefined'
}
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
euh.. pas moi (?)

<script>
function envoieForm (s_nomForm)
{ alert(s_nomForm);
}
</script>
<form>

</form>

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
ah... ou alors le bouton n'est pas dans le form ?
dans cas : document.forms[s_nomForm]
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

Et sans vouloir abuser quelle diff entre document.forms[s_nomForm] plutôt que document[s_nomForm]
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
crottes de biques... je vais y arriver à tout
dire oui ou non !!!!

si le bouton n'est pas dans le formulaire :
fonction : document.forms[s_nomForm]
l'appel : envoieForm('cnx') et <form name="cnx"...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
document['xxx'] trouve l'élément xxx dans la page
n'importe quel élément je pense ( donc j'essuie )
document.forms['xxx'] trouve le formulaire 'xxx'
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
8 septembre 2010

Désolé, j'avais pas vu les messages précédents.
Cela ne fonctionnait pas car j'avais mis onSubmit="envoieForm (this.form); return false". avec onclick, c'est ok.
Merci pour l'explication entre document['xxx'] et document.forms['xxx'] qui est d'ailleurs parfaitement logique