Comment connaitre la position d'un champ dans un formulaire ? - HTML/CSS - Programmation
Marsh Posté le 29-08-2007 à 20:37:23
tu peut être plus explicite ?
je comprends pas ce que tu entend par position là ?
Marsh Posté le 29-08-2007 à 21:25:48
En effet, j'aurais pu détailler un peu.
sur un champ d'un formulaire j'ai un evenement :
onchange="mafonction(this)"
avec une fonction :
mafonction(_oField) {
//là je voudrait modifier la valeur du champs précédent du formulaire.
_oField.form.elements[????].value = "ma nouvelle valeur";
//avec ???? > index du champ précédent dont je ne peux pas connaitre le nom.
}
Tout ça s'inscrit dans un contexte ou le formulaire est généré automatiquement sur la base de templates paramétrables donc je ne peux pas faire ce que je veux (par exemple donner un nom fixe au champ à modifier).
Merci d'avance.
Marsh Posté le 29-08-2007 à 21:31:55
regarde du coté de DOM
peut être ceci: http://fr.selfhtml.org/javascript/ [...] us_sibling ?
Marsh Posté le 29-08-2007 à 21:44:51
sauf que la c'est pas dans l'arbre html que je veux me déplacer mais dans l'array "form"
En réalité le changement de valeur était un exemple, c'est un peu plus compliqué et je vais pas détailler mais dans le html c'est trop compliqué car je ne sais même pas ce que je cherche input/select/password/checkbox .... et le tout est noyé dans des tableau des div ...
Il y a toujours la solution de parcourir tout le formulaire et de regarder quel est le champs précédent mais c'est un bout de code qui va être appellé très souvent et sur des long formulaires ça risque de ramer.
Je veux bien reconnaitre que mon cas est un peu particulier mais c'est quand même bête qu'un champs dans un formulaire n'ai pas une propriété indiquant sa position au sein de celui-ci.
Marsh Posté le 29-08-2007 à 21:57:31
quand tu parles de précédent, tu veux dire déclaré avant dans le code html ? à ma connaissance il n'y a pas de moyen de le trouver simplement autrement qu'en faisant une boucle.
de plus, est-on sur que si on fait une boucle, l'ordre soit bien celui de l'affichage ?
Marsh Posté le 29-08-2007 à 22:03:17
clairement pas !
tu code a l'aveuglette ?
il faut penser a ce qu'on veux faire avant de prendre sa plume
Marsh Posté le 29-08-2007 à 22:05:09
c'est bien ça, du coup la notion "d'ordre" telle que décrite par fifiz ("champ précédent" ) n'est pas transcriptible en code
Marsh Posté le 29-08-2007 à 22:13:20
Et il prends quoi comme ordre ? par ordre alphabétique ? il fait une loterie ?
Je suis en train de modifier un traitement ou à l'origine justement il faisait une boucle sur forms[n].elements[i] pour i = 0 à forms[i].length et il n'y a jamais eu de problème d'ordonnancement.
Vous avez des sources ?
Marsh Posté le 29-08-2007 à 22:16:38
tout simplement la mise en page (via les css notament) peu foutre tes elements dans un ordre inverse de celui dans lequel ils ont étés écrits dans le fichier html. (genre ta 15 div, la dernier div peu etre, grace a quelques properties bien placées, être tout en haut de ta page)
bon et même avec ta boucle tu vas aller ou comme ça ? où t'arrete tu ?
Marsh Posté le 29-08-2007 à 22:27:33
il est vrai que "de manière générale" les champs des formulaires apparaissent dans l'ordre où ils sont décrits dans le code source, mais ce n'est pas une règle fiable.
ça dépend de ce que tu veux faire. peux-tu expliquer à quoi sert ton script ?
Marsh Posté le 30-08-2007 à 00:03:52
"bon et même avec ta boucle tu vas aller ou comme ça ? où t'arrete tu ?"
> Quand j'ai trouver le n° du champ recherché ... après je peux facilement adresser le champs précédent ou le champs suivant en faisant +1 ou -1 ... mais justement l'idée était de ne pas avoir à faire de boucle.
Donc si ce n'est pas possible de connaitre la position d'un champs dans le formulaire sans faire de boucle, je vais me démerder autrement.
Merci quand même.
A+
Marsh Posté le 30-08-2007 à 10:04:13
comprends comment tu trouve le champs rehcercher si ta rien de spécifique (id, toussa)
Marsh Posté le 30-08-2007 à 10:24:50
fifiz, le seul moyen est de parcourir la nodeList Elements de ton form. C'est le seul moyen existe. Ya rien d'autre , le DOM n'a rien de spécifique à cela (un index d'ordre de champ par exemple, un peu comme le rowIndex sur les TR)
Marsh Posté le 30-08-2007 à 11:04:40
En plus de la collection Elements de ton form , tu peux également te servir de tabIndex ( si ceux-ci ont été correctement réglés dans ton formulaire).
Marsh Posté le 29-08-2007 à 20:35:16
Bonjour,
Je voudrais savoir comment récupérer la position d'un champ dans un formulaire lors de l'exécution d'un évenement onchange.
Merci d'avance pour la personne qui a la réponse car la je bloque completement =(
A+
Message édité par fifiz le 29-08-2007 à 20:36:45