web-dev-qa-db-fra.com

Obtention des options sélectionnées avec querySelectorAll

Je me demande s'il est possible en Javascript d'obtenir les options actuellement sélectionnées dans un champ <select multiple> En utilisant l'API Selctors plutôt qu'une itération "stupide" sur toutes les options.

select.querySelectorAll('option[selected="selected"]') ne renvoie que les options qui ont été marquées comme présélectionnées dans le code HTML d'origine, ce qui n'est pas ce que je recherche. Des idées?

23
GOTO 0

document.querySelectorAll('option:checked')

Fonctionne même sur IE9;)

47
a better oliver

J'ai également été confronté à votre problème, j'ai l'impression que cela a à voir avec JavaScript qui ne reconnaît pas les changements dans le DOM.

Voici une solution:

jsFiddle

document.getElementById('test').onclick = function () {
    var select = document.getElementById('select');
    var options = getSelectedOptions(select);
    console.log(options);
};

function getSelectedOptions(select) {
    var result = [];
    var options = select.getElementsByTagName('option');
    for (var i = 0; i < options.length; i++) {
        if (options[i].selected)
            result.Push(options[i]);
    };
    return result;
}
1
Daniel Imms