6
votes

Manière facile de sélectionner rapidement un open-optgroup dans une boîte à sélectionner

J'ai une boîte de sélection dans laquelle je peux sélectionner plusieurs options. Dans la zone Select, il y a plusieurs optgroups. Y a-t-il un moyen facile de sélectionner un ensemble d'optgroup à la fois en JavaScript?


0 commentaires

4 Réponses :


2
votes

jQuery: xxx


0 commentaires

4
votes

Je suggère d'utiliser JQuery (ou un autre cadre) pour gérer rapidement les sélections DOM. Donnez à chaque optgroup une classe pour faciliter la saisie. XXX PRE>

Si vous souhaitez sélectionner l'ensemble du groupe en fonction de l'utilisateur en sélectionnant le groupe, procédez comme suit: P>

$("optgroup.className").select(function(e) {
  $(this).children().attr('selected','selected');
});


4 commentaires

Hmm j'essayais de trouver une solution sans jQuery. Mais en regardant le moyen simple de le faire; Et de l'autre côté: traversant le DOM .... jQuery c'est.


@Blub - Je pense que beaucoup de gens entreront à JQuery de cette façon. ;-)


Traverser le DOM-toi-même n'est pas terriblement difficile, mais un cadre facilite la tâche. DOCUMENT.GETTELEMENTBYID ('SELECTEMENTEDIDED') Vous donnerait l'élément Select lui-même. Ensuite, il suffit de traverser ses enfants ou d'ajouter un auditeur d'événement pour capturer l'événement Select et analyser s'il s'agit de votre openGroup souhaité. Si tel est le cas, vous traverseriez les enfants d'optgroup et les sélectionneriez aussi.


AS TIP, dans les versions jQuery plus récentes, vous devez utiliser .prop () au lieu de .attr () dans ce cas.



4
votes

Je suis normalement contre l'utilisation de jQuery pour des emplois simples comme celui-ci, mais je peux voir sa valeur ici. Néanmoins, si vous préférez une solution non-jQuery qui aura les avantages de l'utilisation d'aucune bibliothèque, n'introduisant aucun ID ou classes parasites et de courir plus vite, voici un: xxx

si votre a une carte d'identité que vous pouvez supprimer avec la fonction selectoptgroup et simplement passer l'optgroup directement dans SELECTOPTGROUPOPTIONS .


0 commentaires

2
votes

J'essayais de faire quelque chose de similaire maintenant.

Je voulais sélectionner un 's

cette solution à moitié travaillé ...

sur cliquant sur le ' s L'étiquette de tous ses enfants est devenu sélectionné.

mais lorsque vous cliquez simplement sur un

La pièce finale du puzzle consistait à supprimer l'événement bulletin à la hausse dans le cas où un

travail!

EDIT

t Travaux de travail dans IE8 (et douteux

Il décide d'ignorer totalement des événements sur les deux et des éléments. La seule alternative que je peux penser est de positionner des éléments au-dessus des étiquettes d'optgroup pour capturer le clic, mais il ne vaut probablement pas la peine d'effort ...


0 commentaires