• [^] # Re: getElementsByName

    Posté par . En réponse au message Le beurre et l'argent du beurre. Évalué à 1.

    Bon, merci pour cette réponse. Je vais expliciter un peu plus ma problématique :
    Voilà, je veux me coder un ensemble de fonctions génériques capables de gérer correctement les formulaires de mes applications.
    Jusque là, ça fonctionnait du feu de dieu, mais il n'y avait que du code php.
    Les champs n'ont pas été nommés ainsi pour le fun, il y a une logique derrière. En effet, parfois un formulaire n'intervient que sur une ligne d'une table de la base de données. Dans ce cas, le tableau formField ne descend que sur un niveau (0) et les clefs associatives correspondent aux nom des champs de la table en question.
    Dans ce cas, avec par exemple une table avec deux champs, je n'aurai dans mon formulaire que formField[0][champ1] et formField[0][champ2].
    Mais parfois, j'ai des formulaires qui interviennent sur plusieurs lignes d'une ou plusieurs tables.
    Dans ce cas, pas de soucis avec notre modèle conceptuel, car pour chaque ligne, il nous suffit d'incrémenter le niveau de formField.
    Ainsi, si je voulais pouvoir modifier sur un autre écran dix lignes simultanées de la même table que précédement, j'aurais :
    formField[0][champ1]
    formField[1][champ1] etc.

    Maintenant que je fais ça en ajax, certes c'est moi qui construit la requête envoyée au serveur, et je peux artificiellement renommer mes champs avant d'envoyer les informations au serveur, je sais bien que ce n'est pas un soucis.
    Ce que je voudrais c'est pouvoir récupérer au moins une information équivalente à ce que j'avais auparavant. Avec getElementsByName, il faut que le nom passé soit clairement identifié, mais comme je veux une fonction générique, pas moyen. Je ne connais pas le nom du dernier champs à priori.
    Quand à l'id, il doit être unique, mais je me retrouve avec le même problème qu'avant.
    Alors je ne vois pas trop comment procéder pour l'instant.
    A moins de nommer mes champs formField_0-_champ1- et de remplacer _ par [ et - par ] par exemple, et de faire un eval dessus....
    Mais il y a peut-être une façon de procéder plus propre ou plus maline.
    Quoi qu'il en soit, avec firebug, j'ai bien pu voir que form.formField[0][champ1] existe, mais pas moyen d'y accéder. A croire que javascript est moins puissant que php de ce point de vue là et n'est pas capable de générer un tableau à la volée.
    Voilà, j'espère que ma problématique est plus claire. Je suis ouvert à toute suggestion, et qui sait, peut-être que lundi, après trois nuitées de someil j'aurais cet éclair de génie dont j'ai tellement besoin pour régler le problème !