- 1
[Opened] [Résolu] Liste déroulante dynamique
Posted by cowa on 01/10/2008 22:16
Bonjour, j'ai une liste de constructeurs de voiture et une autre de modèles. En choisissant un constructeur, je voudrais que la liste des modèles soit automatiquement rafraichie avec les modèles de ce constructeur.
Quelle est la meilleure façon de le faire ?
- Chargement via Ajax ?
- Soumission automatique du formulaire sur un onchange() de la liste des constructeurs, puis chargement de la liste filtrée avec la sélection précédente ?
Dans les 2 cas, comment feriez-vous ?
PS : je n'ai pas trouvé comment ajouter un évènement javascript à un input généré par jForms...
[Opened] Re: Liste déroulante dynamique
Posted by laurentj on 01/10/2008 22:23
Il n'y a pas de meilleur façon de faire. Tout depend de ce que tu veux proposer à ton utilisateur. Peut être que l'Ajax, bien utilisé, ça peut être plus sympa pour le user, vu que la page n'a pas à être recharger.
Une chose que j'ai souvent fait, quand il n'y avait pas énormément de donnée, c'est de stocker dans la page en javascript toute la liste des constructeurs de voiture et tout les modèles, et sur un onchange du constructeur, je modifiais la liste des modèles à partir des données stockées dans mes tableaux js. Bon maintenant, tu dois avoir pas mal de modèle et constructeur donc c'est pas forcément génial de faire comme ça dans le cas présent.
En tout cas pour le moment, jForms ne permet pas de gérer ça automatiquement (mais c'est prévu dans la 1.1 si tout va bien).
Pour ce qui est d'ajouter un évènement JS à un input généré par jForms, tu fais comme la plupart des libs js moderne : sur le onload de la page, tu récupère l'input en js, et tu lui déclare ton event handler. N'importe quel lib ajax te permet de faire ça très simplement. Cette façon de faire est du "javascript non intrusif", c'est à dire pas en dur au milieu du html, mais dans un fichier js séparé ou dans l'entete html.
[Opened] Re: Liste déroulante dynamique
Posted by cowa on 01/14/2008 09:07
Tout marche niquel ! Tu peux passer le point en résolu.
Merci.
- 1