195 votes

obtenez de l'indice de l'option sélectionnée avec jQuery

Je suis un peu confus sur la façon d'obtenir un indice d'une option sélectionnée à partir d'un code html select élément.

Sur cette page il y a décrit deux méthodes. Toutefois, les deux sont de retour m'a toujours -1. Voici mon code JQuery

$(document).ready(function(){
    $("#dropDownMenuKategorie").change(function(){
        alert($("#dropDownMenuKategorie option:selected").index());
        alert($("select[name='dropDownMenuKategorie'] option:selected").index());
    });
});

et en html

(...)
<select id="dropDownMenuKategorie">
    <option value="gastronomie">Gastronomie</option>
    <option value="finanzen">Finanzen</option>
    <option value="lebensmittel">Lebensmittel</option>
    <option value="gewerbe">Gewerbe</option>
    <option value="shopping">Shopping</option>
    <option value="bildung">Bildung</option>
</select>
(...)

Pourquoi ce comportement? Est-il une chance que l' select n'est pas "prêt" au moment de l'attribution de son change() méthode? En outre, l'évolution .index() de .val() est de retour moi, le droit de la valeur, c'est donc ce qui me confond encore plus.

382voto

Guffa Points 308133

La première des méthodes semblent fonctionner dans les navigateurs que j'ai testé, mais les balises d'option n'a pas vraiment d'correspondent à des éléments réels dans tous les navigateurs, de sorte que le résultat peut varier.

Utilisez simplement l' selectedIndex de la propriété de l'élément DOM:

alert($("#dropDownMenuKategorie")[0].selectedIndex);

99voto

user167517 Points 51

Une bonne façon de résoudre ce problème en Jquery manière

$("#dropDownMenuKategorie option:selected").index()

19voto

Metanoia Points 1

J'ai un peu différente de la solution en fonction de la réponse par user167517. Dans ma fonction, je suis en utilisant une variable pour l'id de la zone de sélection, je suis ciblage.

var vOptionSelect = "#productcodeSelect1";

L'indice est retourné avec:

$(vOptionSelect).find(":selected").index();

7voto

rajesh kakawat Points 6871

essayez ceci

 alert(document.getElementById("dropDownMenuKategorie").selectedIndex);

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