Il convient de noter que cela est plus facile à faire avec $ ("# target") [0] .selectedIndex = 0;
David Andres
17
Cela fonctionne, mais il est basé sur la valeur du 1er élément , si le 1er élément contient une valeur vide, il sélectionnera l'élément le plus proche AVEC valeur
evilReiko
2
Semble fonctionner très bien, sauf pour IE6. Incertain de 7-8, fonctionne le 9.
Nicholi
3
Je me rétracte ma déclaration précédente, devançait moi-même. $ ("# cible"). val ("option: premier"); fonctionne le plus partout mais IE6 $ ("target"). val ($ ("# option cible: first"). val ()); fonctionnera dans IE6, car vous recherchez littéralement la première valeur et la saisissez comme valeur cible. Deux recherches d'identification au lieu d'une.
Nicholi
2
Et c'est en fait nécessaire pour IE6, 7 et 8. Alors que .val ('option: premier') fonctionne dans IE9 (et Safari et Firefox et Chrome et Opera).
Cela ne fonctionne pas correctement dans tous les cas. J'ai un menu déroulant en cascade parent / enfant. Sélectionnez le parent n ° 1, affichez l'enfant n ° 1, sélectionnez le parent n ° 2 affichez l'enfant n ° 2. Chaque fois qu'ils sélectionnent un nouveau parent, il doit remettre l'enfant correspondant à la première option. Cette solution ne fait pas cela. Il laisse le menu enfant "collant". Voir l'option: selected.prop ('sélectionné', faux) / option: first.prop ('sélectionné', 'sélectionné') solution sur cette question pour la réponse qui fonctionne dans plus de scénarios.
Lance Cleveland
cela ne déclenche pas d'événement onChange. Au moins en chrome.
Tomasz Mularczyk
Je vous remercie! Ceci est la première réponse de la liste des réponses qui a fonctionné pour moi.
@Romesh comment puis-je définir la base selectedIndex sur la valeur?
Junior Frogie
111
// remove "selected" from any options that might already be selected
$('#target option[selected="selected"]').each(function(){
$(this).removeAttr('selected');});// mark the first option as selected
$("#target option:first").attr('selected','selected');
Bonne deuxième approche. Veuillez ajouter la valeur de l'attribut sélectionné. Par exemple, attr ("sélectionné", "sélectionné"). Sans ce paramètre supplémentaire, la sélection n'est pas effectuée.
David Andres
@EgorPavlikhin - Je viens de modifier la réponse pour inclure le code JQuery pour supprimer le drapeau "sélectionné" de toutes les options qui auraient déjà été sélectionnées. Maintenant, la réponse est correcte :)
jmort253
20
Il n'y a pas besoin de la eachfonction, devrait être: $('#target option[selected="selected"]').removeAttr('selected')également maintenant devrait être utilisé avec removePropet à la propplace.
vsync
Une version plus approfondie de la réponse de James Lee Baker ailleurs sur cette question, ajoute cependant des cycles de calcul qui peuvent ne pas être nécessaires si l'interface est bien gérée.
Vous devez également "désélectionner" tous les éléments sélectionnés précédemment pour que cela fonctionne dans plus de cas. Voir la réponse de James Lee Baker pour plus de détails.
Lance Cleveland
44
La modification de la valeur de l'entrée de sélection ou l'ajustement de l'attribut sélectionné peut remplacer la propriété selectedOptions par défaut de l'élément DOM, entraînant un élément qui peut ne pas se réinitialiser correctement sous une forme dont l'événement de réinitialisation a été appelé.
Utilisez la méthode prop de jQuery pour effacer et définir l'option requise:
Parfait. J'ai des menus déroulants en cascade. Lorsqu'un utilisateur sélectionne l'option parent 2 puis l'option enfant 3, je ne veux pas que cela "colle". En d'autres termes, l'utilisateur sélectionne ensuite le parent n ° 1, puis re-sélectionne le parent n ° 2. Lorsque cela se produit, je veux que le menu enfant soit réinitialisé sur la première option (qui est "Any" dans mon cas). Toutes les autres solutions échouent ici sur Firefox v19 et Chrome sur Linux.
Cela ne fonctionnera pas dans les cas où une liste déroulante a un élément présélectionné. Voir mes commentaires sur la réponse sélectionnée pour plus de détails.
Lance Cleveland
21
Un point subtil que je pense avoir découvert au sujet des réponses les plus votées est que même si elles modifient correctement la valeur sélectionnée, elles ne mettent pas à jour l'élément que l'utilisateur voit (ce n'est qu'en cliquant sur le widget qu'il verra une coche à côté du élément mis à jour).
Le chaînage d'un appel .change () à la fin mettra également à jour le widget UI.
Bon point sur les options désactivées. Belle addition aux réponses présentées!
Lance Cleveland
16
Une autre façon de réinitialiser les valeurs (pour plusieurs éléments sélectionnés) pourrait être la suivante:
$("selector").each(function(){/*Perform any check and validation if needed for each item *//*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */this.selectedIndex=0;});
+1 c'est en fait une bonne réponse, mais vous auriez pu le rendre plus spécifique au domaine de la question; au lieu de $("selector")vous auriez pu juste écrire$('#target')
Cela ne fonctionne que s'il n'y a pas d'options déjà sélectionnées. Voir la réponse de James Lee Baker.
Webars
6
J'ai trouvé que le simple fait de définir attr sélectionné ne fonctionne pas s'il y a déjà un attribut sélectionné. Le code que j'utilise maintenant désactive d'abord l'attribut sélectionné, puis sélectionne la première option.
Cela fonctionne bien et est très similaire à la réponse de James Lee Baker notée ailleurs sur cette question. J'aime l'autre réponse avec option: selected et option: first comme exécution de option: first est susceptible d'être plus rapide (au niveau du calcul) que find ().
Lance Cleveland
5
Bien que chaque fonction ne soit probablement pas nécessaire ...
Cela fonctionne bien et est très similaire à la réponse de James Lee Baker notée ailleurs sur cette question. J'aime l'autre réponse avec option: selected et option: first comme exécution de option: first est susceptible d'être plus rapide (au niveau du calcul) que find ().
Lance Cleveland
2
Cela ne fonctionnait que pour moi en utilisant un déclencheur («changement») à la fin, comme ceci:
Sur le dos de la réponse de James Lee Baker, je préfère cette solution car elle supprime la dépendance à la prise en charge du navigateur pour: d'abord: sélectionné ...
Pour moi, cela n'a fonctionné que lorsque j'ai ajouté le code suivant:
.change();
Pour moi, cela n'a fonctionné que lorsque j'ai ajouté le code suivant: Comme je voulais "réinitialiser" le formulaire, c'est-à-dire sélectionner toutes les premières options de toutes les sélections du formulaire, j'ai utilisé le code suivant:
Qu'en est-il de la position 15, 25 ou d'un texte spécifique? : D
Marcelo Agimóvel
L'appel .val()obtient simplement la valeur de la première option de la liste. Il ne sélectionne pas réellement (rendre sélectionné) la première option, comme cela a été demandé dans la question d'origine.
Funka
1
Pour moi, cela n'a fonctionné que lorsque j'ai ajouté la ligne de code suivante
Vous pouvez essayer ceci
la source
$("#target").prop("selectedIndex", 0).change();
la source
each
fonction, devrait être:$('#target option[selected="selected"]').removeAttr('selected')
également maintenant devrait être utilisé avecremoveProp
et à laprop
place.Lorsque vous utilisez
cela ne fonctionnera pas dans Chrome et Safari si la première valeur d'option est nulle.
je préfère
car il peut fonctionner dans tous les navigateurs.
la source
La modification de la valeur de l'entrée de sélection ou l'ajustement de l'attribut sélectionné peut remplacer la propriété selectedOptions par défaut de l'élément DOM, entraînant un élément qui peut ne pas se réinitialiser correctement sous une forme dont l'événement de réinitialisation a été appelé.
Utilisez la méthode prop de jQuery pour effacer et définir l'option requise:
la source
la source
Un point subtil que je pense avoir découvert au sujet des réponses les plus votées est que même si elles modifient correctement la valeur sélectionnée, elles ne mettent pas à jour l'élément que l'utilisateur voit (ce n'est qu'en cliquant sur le widget qu'il verra une coche à côté du élément mis à jour).
Le chaînage d'un appel .change () à la fin mettra également à jour le widget UI.
(Notez que j'ai remarqué cela en utilisant jQuery Mobile et une boîte sur le bureau Chrome, donc ce n'est peut-être pas le cas partout).
la source
Si vous avez désactivé les options, vous pouvez ajouter non ([désactivé]) pour éviter de les sélectionner, ce qui se traduit par ce qui suit:
la source
Une autre façon de réinitialiser les valeurs (pour plusieurs éléments sélectionnés) pourrait être la suivante:
la source
$("selector")
vous auriez pu juste écrire$('#target')
Aussi simple que ça:
la source
la source
J'ai trouvé que le simple fait de définir attr sélectionné ne fonctionne pas s'il y a déjà un attribut sélectionné. Le code que j'utilise maintenant désactive d'abord l'attribut sélectionné, puis sélectionne la première option.
la source
Bien que chaque fonction ne soit probablement pas nécessaire ...
travaille pour moi.
la source
Voici comment je le ferais:
la source
Cela ne fonctionnait que pour moi en utilisant un déclencheur («changement») à la fin, comme ceci:
la source
Si vous allez utiliser la première option par défaut comme
alors vous pouvez simplement utiliser:
C'est sympa et simple.
la source
Cela a fonctionné pour moi!
la source
Sur le dos de la réponse de James Lee Baker, je préfère cette solution car elle supprime la dépendance à la prise en charge du navigateur pour: d'abord: sélectionné ...
la source
Pour moi, cela n'a fonctionné que lorsque j'ai ajouté le code suivant:
.change();
Pour moi, cela n'a fonctionné que lorsque j'ai ajouté le code suivant: Comme je voulais "réinitialiser" le formulaire, c'est-à-dire sélectionner toutes les premières options de toutes les sélections du formulaire, j'ai utilisé le code suivant:
$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });
la source
Utilisation:
Veuillez trouver le fonctionnement simple dans ce JSFiddle .
la source
.val()
obtient simplement la valeur de la première option de la liste. Il ne sélectionne pas réellement (rendre sélectionné) la première option, comme cela a été demandé dans la question d'origine.Pour moi, cela n'a fonctionné que lorsque j'ai ajouté la ligne de code suivante
la source
bien travaillé en chrome
la source
Si vous stockez l'objet jQuery de l'élément select:
la source
Vérifiez cette meilleure approche en utilisant jQuery avec ECMAScript 6 :
la source
Vous pouvez sélectionner n'importe quelle option
dropdown
en l'utilisant.la source
$('select#id').val($('#id option')[index].value)
Remplacez l' id par un ID de tag de sélection particulier et un index par l'élément particulier que vous souhaitez sélectionner.
c'est à dire
Donc, ici, pour la sélection du premier élément, j'utiliserai le code suivant:
la source
Utilisation:
la source