Problème interpretation chaine

Résolu
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010 - 4 sept. 2009 à 19:58
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010 - 5 sept. 2009 à 12:44
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 10:55
alert( document[s_nomForm].length);

le mieux ( ? )


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

function envoieForm (s_nomForm)
{ alert(s_nomForm);
}
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 08:39
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 09:10
et, vous semblez dire :
>>document.s_nomForm est 'undefined'.
>>envoieForm('cnx')
donc votre formulaire doit
être <form name="cnx"....>
0
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
5 sept. 2009 à 10:37
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'
}
0

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

Posez votre question
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
5 sept. 2009 à 11:32
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 11:46
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]
0
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
5 sept. 2009 à 12:12
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'
}
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 12:23
euh.. pas moi (?)

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

</form>

0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 12:24
ah... ou alors le bouton n'est pas dans le form ?
dans cas : document.forms[s_nomForm]
0
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
5 sept. 2009 à 12:26
Et sans vouloir abuser quelle diff entre document.forms[s_nomForm] plutôt que document[s_nomForm]
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 12:26
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"...
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 sept. 2009 à 12:29
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'
0
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
5 sept. 2009 à 12:44
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
0
Rejoignez-nous