2011-08-31 4 views
0

Y a-t-il un moyen de déterminer dans un gestionnaire de l'élément select de l'élément multiple quelle option a été sélectionnée ou désélectionnée sans tenir à jour une liste distincte des options déjà sélectionnées et en comparant les deux listes?Comment savoir quelle option a été sélectionnée dans un gestionnaire d'événement onchange pour une sélection multiple?

J'ai vu Get last clicked option in multiple select mais étant donné que je travaille sur Mobile Safari, je ne serai pas capable d'utiliser n'importe quel type de gestionnaire d'événement sur le composant sélecteur natif pour déterminer la sélection.

+1

Avez-vous envisagé d'appliquer/supprimer un cours sur l'option sélectionnée chaque fois que vous cliquez dessus? De cette façon, vous n'aurez pas de liste séparée. – user286806

+0

J'ai essayé d'ajouter des écouteurs pour les événements click et touchend à une option dans un select et ils ne semblent pas être déclenchés sur un iPhone ou un iPad. Je ne suis pas sûr de savoir comment mettre en œuvre votre suggestion. – Greg

Répondre

0

Vous devriez utiliser onfocus pour Safari.

En tant que solution généralisée, ce que je ferais:

  1. Grâce à un appel de ligne ou un auditeur capturer l'événement onfocus/onClick sur les options et activer un nom de classe « selectedOption » (tout ce que vous souhaite le nom d'être) sur cet élément:

    onFocus = "javascript: toggleClass (this)" // Inline

  2. Lors de la récupération des éléments utiliser un sélecteur de tous les éléments d'option avec la classe particulière 'selectedOption' . En jQuery, quelque chose comme ça fonctionnerait:

    jQuery (, '#options' 'selectedOption.') // où #options élément DOM détient toutes vos options

Hope this helps.

Questions connexes