2009-08-20 7 views
0

Disons que j'ai une liste déroulante que je veux créer "à la volée" lorsque l'utilisateur interagit avec elle. Par exemple: la liste déroulante n'a que l'option "Joindre un fichier". Lorsque l'utilisateur clique sur/interagit dans la liste déroulante, j'ai besoin pour cela de générer, à ce moment, tous les fichiers disponibles qu'ils peuvent attacher (ce qui dépend d'autres interactions de la forme ... donc pourquoi j'ai besoin d'un "sur le voler "méthode").Comment remplir une liste déroulante sur un événement souris avec jQuery?

Mon problème est d'essayer de trouver l'événement approprié en tant que déclencheur. Si j'utilise onFocus, alors IE essaie de charger la liste déroulante d'origine et puis génère la nouvelle liste déroulante, ce qui oblige l'utilisateur à double-cliquer sur la liste déroulante pour interagir avec elle. En FF, il n'y a pas de problèmes avec cette méthode.

J'ai ensuite essayé de passer à onMouseOver qui fonctionne très bien dans IE, mais pas tellement dans FF. La différence entre les deux est que dans IE onMouseOver se déclenche uniquement dans la liste déroulante et non dans la liste déroulante et dans FF elle se déclenche sur les deux (vous essayez donc de sélectionner une option dans la liste et elle continue de générer la liste à la volée, ce qui vous empêche d'interagir avec lui).

Des idées?

Répondre

1

Avez-vous essayé onClick?

De même, vous devriez ajouter une certaine logique dans le code qui remplit les options. Si rien n'a changé sur la page, il n'est pas nécessaire de remplir la liste déroulante. Donc, si vous stockez l'état de la page en quelque sorte, vous pouvez vérifier si le nouvel état est différent de l'ancien état, puis remplir la liste déroulante si c'est le cas.

+0

J'ai essayé onClick. Le problème est que chaque fois que vous cliquez sur un élément dans la liste déroulante, il appelle à nouveau la liste déroulante. –

+0

L'état est difficile à suivre car il peut y avoir 10-20 + de ces listes déroulantes, qui sont créées dynamiquement lorsque l'utilisateur ajoute plus de lignes au formulaire (chaque ligne possède une version unique de cette liste déroulante). Chaque fois qu'ils sélectionnent un élément dans l'une de ces listes déroulantes, cela affecte les éléments d'une autre liste déroulante (une ou plusieurs). Pour de meilleures performances, nous ne mettons à jour que celui avec lequel ils interagissent (ils n'ont donc pas besoin d'attendre car il remplit d'autres listes déroulantes avec lesquelles ils peuvent ou non interagir). –

Questions connexes