920 votes

Change la valeur d'une liste déroulante avec jQuery

J'ai une liste déroulante avec les valeurs connues. Ce que j'essaie de faire est de définir la liste déroulante à une valeur particulière que je sais qu'il existe à l'aide de jQuery. L'utilisation de JavaScript, je ferais quelque chose comme:

ddl = document.getElementById("ID of element goes here");
ddl.value = 2; // 2 being the value I want to set it to.

Cependant, j'ai besoin de le faire avec jQuery, parce que je suis en utilisant une classe CSS pour mon sélecteur (stupide ASP.NET id client...).

Voici quelques choses que j'ai essayé:

$("._statusDDL").val(2); // Doesn't find 2 as a value.
$("._statusDDL").children("option").val(2) // Also failed.

Comment puis-je le faire avec jQuery?

Mise à jour

Donc, comme il s'avère, j'ai eu droit la première fois avec:

$("._statusDDL").val(2);

Quand j'ai mis une alerte juste au-dessus, il fonctionne très bien, mais quand j'ai supprimer l'alerte et le laisser tourner à pleine vitesse, j'ai l'erreur

Impossible de définir la propriété sélectionnée. Index Non Valide

Je ne suis pas sûr si c'est un bug avec jQuery ou Internet Explorer 6 (je devine que Internet Explorer 6), mais c'est terriblement ennuyeux.

1087voto

strager Points 41713

jQuery documentation états:

[jQuery.val] les chèques, les sélectionne, tous les boutons radio, cases à cocher, puis sélectionnez les options qui correspondent à un ensemble de valeurs.

Ce comportement est en jQuery versions 1.2 et au-dessus.

Probablement vous voulez ce:

$("._statusDDL").val('2');

155voto

Aivar Luist Points 161

Avec champ caché, vous devez utiliser comme ceci:

$("._statusDDL").val(2);
$("._statusDDL").change();

ou

$("._statusDDL").val(2).change();

31voto

y0mbo Points 2268

Juste un avis, vous n'avez pas besoin d'utiliser des classes CSS pour accomplir cette tâche.

Vous pouvez écrire la ligne de code suivante pour obtenir le nom de contrôle sur le client:

$("#<%= statusDDL.ClientID %>").val("2");

ASP.NET rendra l'ID de contrôle correctement à l'intérieur du jQuery.

28voto

emas Points 310

Essayez

$("._statusDDL").val("2");

et pas avec

$("._statusDDL").val(2);

21voto

ISIK Points 101

Après avoir étudié plusieurs solutions, cela a fonctionné pour moi.

J'ai une liste déroulante avec certaines valeurs et je veux choisir la même valeur à partir d'une autre liste déroulante... Donc j'ai d'abord mis dans une variable, l' selectIndex de ma première liste déroulante.

var indiceDatos = $('#myidddl')[0].selectedIndex;

Ensuite, je sélectionne cet index sur ma deuxième liste déroulante.

$('#myidddl2')[0].selectedIndex = indiceDatos;

Note:

Je suppose que c'est le plus court, fiable, général et élégant.

Parce que dans mon cas, je suis à l'aide de l'option sélectionnée est l'attribut de données au lieu de la valeur de l'attribut. Donc, si vous n'avez pas de valeur unique pour chaque option, la méthode ci-dessus est le plus court et doux!!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X