J'ai un objet avec des paires d'options clé / valeur que je souhaite masquer / supprimer d'une liste de sélection. Aucun des sélecteurs d'options suivants ne fonctionne. Qu'est-ce que je rate?
$.each(results['hide'], function(name, title) {
$("#edit-field-service-sub-cat-value option[value=title]").hide();
$("#edit-field-service-sub-cat-value option[@value=title]").hide();
});
jquery
html-select
hitfactory
la source
la source
Réponses:
Pour ce que ça vaut, la deuxième forme (avec le
@
) n'existe pas dans jQuery 1.3. Le premier ne fonctionne pas car vous vous attendez apparemment à une interpolation variable. Essaye ça:Notez que cela se cassera probablement de diverses manières hideuses s'il
title
contient des métacaractères de sélection jQuery.la source
Vous ne pouvez pas faire ce x-browser. Si je me souviens, c'est à dire a des problèmes. La chose la plus simple à faire est de conserver une copie clonée de la sélection avant de supprimer des éléments, cela vous permet de supprimer facilement, puis de rajouter les éléments manquants.
la source
J'ai trouvé un meilleur moyen, et c'est très simple:
Pour afficher à nouveau, trouvez simplement cette option (pas span) et
$("option_you_want_to_show").unwrap()
.Il a été testé sur Chrome et Firefox.
la source
$("select").val("0").trigger("change")
. La solution plusVoici mon spin, probablement un peu plus rapide en raison des méthodes DOM natives
la source
Cela fonctionne dans Firefox 3.0, mais pas dans MSIE 8, ni dans Opera 9.62:
Mais plutôt cacher une option, on peut simplement la désactiver:
La première des deux lignes ci-dessus est pour Firefox et passe le focus à la 2ème option (en supposant qu'elle a une valeur = "2"). Si nous l'omettons, l'option est désactivée, mais affiche toujours l'option «activé» avant de la déposer. Par conséquent, nous passons le focus à une autre option pour éviter cela.
la source
Cela PEUT être fait sur plusieurs navigateurs; il faut juste une programmation personnalisée. Veuillez consulter mon violon sur http://jsfiddle.net/sablefoste/YVMzt/6/ . Il a été testé pour fonctionner dans Chrome, Firefox, Internet Explorer et Safari.
En bref, j'ai un champ caché
#optionstore
, qui stocke le tableau de manière séquentielle (car vous ne pouvez pas avoir de tableaux associatifs en JavaScript). Ensuite, lorsque vous modifiez la catégorie, il analyse les options existantes (uniquement pour la première fois), les écrit#optionstore
, efface tout et ne remet que celles associées à la catégorie.REMARQUE: j'ai créé ceci pour autoriser différentes valeurs d'option du texte affiché à l'utilisateur, donc il est très flexible.
Le HTML:
Le JavaScript / jQuery:
la source
resultgood
est simplement une vérification pour voir si un élément aoptionlisting
été ajouté. si c'était le cas, la liste de<option>
s est renvoyée. Sinon, rien n'est retourné, ce que vous voudriez si vous incluiez accidentellement une classe qui n'était pas réellement là (dans cet exemple, disons, sub-Food6). Pour renvoyer un blanc dans une liste déroulante, remplacez la ligne de déclaration au début de la fonction parvar optionlisting="<option value=''></option>";
.data
attribut; c'est plus sémantiquement correct.Votre meilleur pari est de définir disabled = true sur les éléments d'option que vous souhaitez désactiver, puis dans l'ensemble CSS
De cette façon, même si le navigateur ne prend pas en charge le masquage de l'élément désactivé, il ne peut toujours pas être sélectionné .. mais sur les navigateurs qui le prennent en charge, ils seront masqués.
la source
Jetez un œil à cette question et les réponses -
Désactiver les options de sélection ...
En regardant votre code, vous devrez peut-être citer la valeur d'attribut
à partir des sélecteurs d'attributs jQuery
ÉDITER:
Je viens de réaliser que vous obtenez le titre du paramètre de fonction, auquel cas la syntaxe devrait être
la source
En référence à la suggestion de redsquare, j'ai fini par faire ceci:
puis pour inverser cela:
la source
Le problème est qu'Internet Explorer ne semble pas prendre en charge les méthodes de masquage et d'affichage des options de sélection. Je voulais masquer toutes les options de ma sélection ddlReasonCode qui n'avaient pas le type actuellement sélectionné comme valeur de l'attribut "attType".
Alors que le charmant Chrome était assez satisfait de:
Voici ce qu'IE exigeait (les enfants, n'essayez pas ceci chez CHROME :-)):
J'ai trouvé cette idée d'emballage sur http://ajax911.com/hide-options-selecbox-jquery/
la source
Après avoir testé, les solutions postées ci-dessus par divers, y compris le chaos, pour masquer des éléments fonctionnent désormais dans les dernières versions de Firefox (66.0.4), Chrome (74.0.3729.169) et Edge (42.17134.1.0)
Pour IE, cela ne fonctionne pas, mais vous pouvez désactiver l'option
puis forcez la sélection d'une valeur différente.
Notez que pour une option désactivée, la valeur de la liste déroulante sera désormais nulle, et non la valeur de l'option sélectionnée si elle est désactivée.
la source
Il semble que vous deviez également mettre à jour l'attribut "sélectionné". Sinon, l'option actuellement sélectionnée peut continuer à s'afficher - bien qu'elle disparaisse probablement lorsque vous allez réellement sélectionner une option (c'est ce qu'elle a fait pour moi): Essayez de faire ceci:
la source
J'essayais de masquer les options d'une liste de sélection en fonction de l'option sélectionnée d'une autre liste de sélection. Cela fonctionnait dans Firefox3, mais pas dans Internet Explorer 6. J'ai quelques idées ici et j'ai une solution maintenant, alors j'aimerais partager:
Le code JavaScript
Le HTML
Il a été vérifié comme fonctionnant dans Firefox 3 et Internet Explorer 6.
la source
id
attribut doit être unique: id = Cet attribut attribue un nom à un élément. Ce nom doit être unique dans un document.Pour éviter la concaténation de chaînes, vous pouvez utiliser jQuery.grep
la source
Probablement pas aussi élégant ou réutilisable qu'un plugin jquery. mais une autre approche consiste simplement à enregistrer les éléments d'option et à les échanger si nécessaire:
faites ceci pour utiliser l'objet:
la source
J'ai implémenté une solution en utilisant une fonction qui filtre une combobox (
<select>
) basée sur des attributs de données personnalisés. Cette solution prend en charge:<option>
pour montrer quand le filtre laisserait la sélection vide.<option>
les éléments sans l'attribut data-filter ne sont pas modifiés.Testé avec jQuery 2.1.4 et Firefox, Chrome, Safari et IE 10+.
Voici l'exemple HTML:
Le code jQuery pour le filtrage:
Pour l'utiliser, il vous suffit d'appeler la fonction avec la valeur que vous souhaitez conserver.
Ensuite, la sélection résultante sera:
Les éléments d'origine sont stockés par la fonction data (), donc les appels suivants ajouteront et supprimeront les éléments corrects.
la source
La réponse indique que ce
@
n'est pas valide pour les nouvelles itérations jQuery. Bien que ce soit correct, certains IE plus anciens ne cachent toujours pas les éléments d'options. Pour tous ceux qui doivent gérer le masquage des éléments d'option dans les versions concernées, j'ai publié une solution de contournement ici:http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/
En gros, enveloppez-le simplement avec une portée et remplacez-le lors du spectacle.
la source
Quiconque tombe sur cette question pourrait également envisager l'utilisation de Chosen , qui étend considérablement les capacités des sélections.
la source
Ensuite, dans votre css, assurez-vous d'avoir
la source
Je sais que cette question a reçu une réponse. Mais mon exigence était légèrement différente. Au lieu de valeur, je voulais filtrer par texte. J'ai donc modifié la réponse de @William Herry comme ça.
De cette façon, vous pouvez également utiliser la valeur en remplaçant contient comme ceci
la source
Pour l' option de masquage dans sélectionnez l' utilisation:
Où option_node est HTMLOptionElement
PS: je n'utilise pas JQuery, mais je suppose que cela fonctionnera:
la source
J'ai trouvé préférable de supprimer complètement le DOM.
Compatible avec tous les navigateurs. Fonctionne aussi sur IE11
la source
option: option eq (0) -hide à l'index '0' dans la boîte de sélection.
la source
Vous pouvez afficher / masquer avec la valeur ou le nom de la classe . Vérifiez le lien ci-dessous avec un exemple de travail.
Afficher / masquer les options choisies par jquery avec une valeur ou avec un nom de classe.
la source
$ ("# ddtypeoftraining option [value = 5]"). css ("display", "none"); $ ('# ddtypeoftraining'). selectpicker ('refresh');
la source