Problème id dans création de tableau dynamique [résolu] - HTML/CSS - Programmation
Marsh Posté le 30-03-2006 à 11:25:02
Bon il manque l'action et l'evenement que tu souhaites faire sur ton champs code produit mais perso je mettrais pas d'id tu n'en as pas vraiment besoin ...
Par exemple, si tu veux alerter la valeur sur ton champs code sur son onblur tu peux faire:
Code :
|
Le truc ou il faut faire attentien, c'est que le this dans la déclaration de la fonction au dessus ne pointe pas sur l'objet que tu es en train de manipuler mais sur l'objet courant au moment de l'appel de la fonction...
Je suis pas clair c'est ça
Après si tu as besoin de récuperer les valeurs des inputs a coté, précise exactement ce dont tu as besoin
Marsh Posté le 30-03-2006 à 11:33:30
En fait il s'agit de la saisie d'une commande.
Pour la rendre plus intéractive j'y ai ajouté des éléments qui changent sans recharger la page. Pour cela j'utilise quelques calcques ainsi qu'Ajax avec XmlHttpRequest.
La partie que tu voi ici constitue la saisie des détails. A chaque clique qui lance ma fonction ca ajoute une ligne.
Au final je metterais un bouton pour valider la form des détails.
Pour ce qu'il y ai des id, il me semble que je n'est pas trop le choix si je veux récupérer les valeurs par la suite.C'est aussi pour ca que j'ai initialisé une variable nb_ligne qui me permet de distinguer les éléments des différentes lignes.
Pour ce qu'il y est de l'id de mon input code_produit, il est obligatoir car j'utilise ceci pour mon moteur de recherche :
Code :
|
Code :
|
Marsh Posté le 30-03-2006 à 11:47:49
mc_cut_killer a écrit : En fait il s'agit de la saisie d'une commande. |
Donc en fait tu as une zone de saisie ou tu rajoutes un ligne pour chaque nouvel 'item' ajouté à la commande, right?
mc_cut_killer a écrit : La partie que tu voi ici constitue la saisie des détails. A chaque clique qui lance ma fonction ca ajoute une ligne. |
Donc sur chacune de ces lignes tu as un champs code produit, qui a une feature 'autosuggest'-like...
mc_cut_killer a écrit : Au final je metterais un bouton pour valider la form des détails.[/quote]
|
Encore une fois non, l'id n'est pas obligatoire... Tu dois initialiser ton autoComplete avec le premier code_produit?
Perso je rajouterais un attribut autosuggest dans ton input:
Code :
|
Et ensuite je récuperais le 1er input de ma page a autosuggest:
Code :
|
Comme ça si un jours tu as besoin dans initialiser plusieurs dès le départ tu changes la fonction pour qu'elle constitue un tableau des noeuds...
Mais bref, ça résoud pas ton problème ... que j'ai toujours pas compris en fait
Marsh Posté le 30-03-2006 à 12:07:13
En fait utiliser des name ou id m'importe peut.
Ce que je veut c'est :
- créer des lignes avec mes input.
- récupérer ces valeurs par la suite
- intégrer mon autosuggest a l'input code_produit
Lorsque j'essaye sur une page test ou je rentre le code html avec ma première ligne à la main ca marche.
Par contre dès que j'utilise ma fonction js pour créer les lignes ca marche plus
Maintenant pour répondre à tes questions, je rajoute effectivement une ligne pour chaque item, à chaque ligne le input code_produit doit avoir une fonction autosuggest.
J'ai aussi pensé à utilisé une second fonction, qui lorsque l'utilisateur ajoute une seconde ligne, fige les valeur de la première. Soit en supprimant les input pour laisser que du texte, soit en interdissant la modification des inputs en rajoutant par exemple :
Code :
|
Après cette étape, je vais ajouter un module qui utilise xmlhttprequest pour déterminer à partir du code produit choisi son libéllé et son prix net. Le libéllé ne sera pas modifiable d'où le fait que je n'ai pas mis d'input, par contre le prix net sera une valeur par défaut mise dans mon input, et modifiable par la suite.
Je continurais ensuite en cherchant à calculer le montant de la même manière à partir du prix net en tenant compte de la remise et du code taxe.
Mais à mon avis il me reste encore pas mal de problèmes à résoudre avant d'optenir ce resultat
Pour ce qu'il y est de "parcourir les noeuds et recuperer les valeurs des champs qui t'interessent", je début en js et voi pas comment le faire.
Enfin comme je l'ai dit plus haut, si il est plus facile d'utilise name que id pas de problème, c'est juste que dans les exemples que j'ai trouvé sur le net utilise id.
Marsh Posté le 30-03-2006 à 12:21:35
mc_cut_killer a écrit : En fait utiliser des name ou id m'importe peut. |
serait-il possible de savoir exactement ce que tu entends par "ça marche plus", nan parce que la franchement s'pas facile
"Oui bonjour j'ai une voiture quand je monte dedans ça marche mais après sur la route ça marche plus..."
mc_cut_killer a écrit : Maintenant pour répondre à tes questions, je rajoute effectivement une ligne pour chaque item, à chaque ligne le input code_produit doit avoir une fonction autosuggest. |
Ce qui te pose problème c'est donc l'ajout de l'autosuggest dynamiquement à chacun des input 'code_produit' ajouté dans une nouvelle ligne????
Quand tu dis ça marche plus alors ça veut dire? Erreur js? fonction qui merdoie?
mc_cut_killer a écrit : J'ai aussi pensé à utilisé une second fonction, qui lorsque l'utilisateur ajoute une seconde ligne, fige les valeur de la première. Soit en supprimant les input pour laisser que du texte, soit en interdissant la modification des inputs en rajoutant par exemple :
|
S'pas top comme idée Et puis tu as un attribut très pratique: readonly, qui bloque tes champs en modification.
mc_cut_killer a écrit : Pour ce qu'il y est de "parcourir les noeuds et recuperer les valeurs des champs qui t'interessent", je début en js et voi pas comment le faire. |
Grace au DOM tu peux parcourir les différents noeuds d'un document html. Dans ton cas tu aurais essentiellement besoin de getElementsByTagName, parentNode, childNodes
mc_cut_killer a écrit : Enfin comme je l'ai dit plus haut, si il est plus facile d'utilise name que id pas de problème, c'est juste que dans les exemples que j'ai trouvé sur le net utilise id. |
Ne me fais pas dire ce que je n'ai pas dit
Les id c'est bien ( et surtout ne pas utiliser de name en dehors d'un form)!!! Mais dans ton cas tu n'en as pas besoin, par contre les names sont obligatoires car si j'ai tout compris à la fin tu soumets ton formulaire ...
Marsh Posté le 30-03-2006 à 12:36:17
Quand je dit ca marche plus, il y à aucune érreur
En fait rien ne se passe, j'ai essayé de supprimer l'id ou de mettre un id érroné dans mon code html qui marche (quand j'ajoute la ligne à la main) et ca me fait pareil.
J'ai essayé d'ajouter:
Code :
|
à la rache dans ma page ou j'ajoute la ligne avec js, et ca marche pour cet input. J'ai même essayé de l'ajouter à plusieurs endroits et ca marche.
C'est pour ca que j'ai conclu que mon problème venait de la.
Je vais essayer de remplacer mes id par name en début d'aprèm pour voir si ca fonctionne ...
Marsh Posté le 30-03-2006 à 13:24:24
mc_cut_killer a écrit : Quand je dit ca marche plus, il y à aucune érreur |
Bon je fais madame Irma là mais est ce que tu n'aurais pas besoin de relancer ton initAutoComplete sur l'input code_produit ajouté???
Citation : Je vais essayer de remplacer mes id par name en début d'aprèm pour voir si ca fonctionne ... |
ça changera rien du tout, perds pas ton temps la dessus. Je disais juste que tu aurais pu faire autrement
Marsh Posté le 30-03-2006 à 14:14:56
Heu ... je crois que madame Irma à vu juste
Je vais essayer.
Domage pour les names, moi qui croi encore au solution miracle ...
Marsh Posté le 30-03-2006 à 14:22:21
Ouah !!!!!!!!! quel "con", je m'étais préparer une fonction pour relancer initAutoComplete
J'étais tellement perturbé par cette histoire de div que je ne l'ai même pas tenté
Ca marche nickel, merci pour ton aide.
Maintenant je vais essayer de comprendre l'utilité de ta fonction
Code :
|
et de mettre en application tes conseils
Encore merci @+
Marsh Posté le 30-03-2006 à 14:57:43
mc_cut_killer a écrit : Maintenant je vais essayer de comprendre l'utilité de ta fonction
|
C'était juste une autre solution de permettant de trouver quel input devait être initAutoCompleté sans passer par un getElementById ( et donc sans avoir besoin d'id).
Pour etre exact, à cette fonction je lui ferais retourner un tableau contenant tous les inputs avec un attribut autocomplete a un et je passerais le tableau dans initAutoComplete.
Interet? Si on arrive en modification sur une facture existante, j'imagine que tous les champs sont déjà alimentés et toutes les lignes créées ... Avec ton truc seul le 1er input aurait l'autocomplete, avec mon bouzin ça se ferait automatiquement pour tous les inputs ayant le tag autocomplete.
En fait moi je prefere juste éviter au maximum d'avoir des ids en dur quand tu fais du "dynamique" ...
Marsh Posté le 30-03-2006 à 15:08:36
OK, je pense que je vais faire comme tu dit.
La j'essaye d'utilisé ma variable nb_ligne pour les différencier mais sans succès
Edit: si ca marche, enfin on dirait.
Voila ce que j'ai fait :
Code :
|
Code :
|
Tu en pense quoi ?
Marsh Posté le 30-03-2006 à 11:07:00
Bonjour à tous,
j'ai poser le même genre de question hier mais le sujet à été effaçé par érreur
J'arrive à ajouter des lignes à mon tableau de manière dynamique grâce à une fonction javascript.
Le problème est que je début en js et que je ne sais pas comment vérifier que mes attributs fonctionnent, mais à prioris ca foire
Voici la première ligne de mon tableau :
Et voici un exemple de ligne avec les id que je voudrais ajouter :
Pour ajouter cette ligne, voici la fonction que j'utilise :
Quand je lance la fonction, la ligne s'ajoute nickel. Jusque là j'étais content et croyait même que ca marchais.
Mais maintenant que j'essaye d'intégrer un moteur de recherche à la Google Suggest dans mon input code produit, ca marche pas .
Le problème doit venir du fait que les id sont mal formulé. Et je ne sais pas comment accèder au code que je viens de créer car il apparaît pas dans le code html de la page.
Merci d'avance pour votre aide
Message édité par mc_cut_killer le 30-03-2006 à 16:00:51