2012-07-20 14 views
15

ho il seguente codiceOttenere i valori selezionati in un tag selezione multipla in Javascript

function searchFlights() { 
    var select1 = document.getElementById("airports-select-1"); 
    var selected1 = []; 
    while(select1.selectedIndex != -1) { 
     if(select1.selectedIndex != 0) selected1.push(select1.options[select1.selectedIndex].value); 
     select1.options[select1.selectedIndex].selected = false; 
    } 

    console.log(selected1); 
} 

Questo funziona bene, ma come si può vedere dal codice di questa linea:

select1.options[select1.selectedIndex].selected = false; 

sta facendo un deselezione del valore.

Ora, non desidero deselezionare i valori. Se annullo la riga nel codice, il codice verrà eseguito per sempre.

Esiste una soluzione più sofisticata e sofisticata per il recupero di più valori da un tag select utilizzando Javascript?

risposta

37

Non sarebbe questa farlo:

function searchFlights() { 
    var select1 = document.getElementById("airports-select-1"); 
    var selected1 = []; 
    for (var i = 0; i < select1.length; i++) { 
     if (select1.options[i].selected) selected1.push(select1.options[i].value); 
    } 
    console.log(selected1); 
}​ 

jsFiddle example

+2

Questa è la risposta. – aurora

0

Aggiornamento per il 2018:

  • Se l'elemento <select> contiene una proprietà selectedOptions, utilizzare tale raccolta. L'unico browser ancora in circolazione che non supporta questo è IE (qualsiasi versione). Edge lo supporta.

  • Se questo non è supportato, la risposta @ j08691 è ancora corretta, ma come un'ottimizzazione delle prestazioni è possibile avviare l'iterazione opzioni a selectedIndex invece di 0. Questo è l'indice della prima opzione selezionata, oppure -1 se non è selezionato nulla.

Problemi correlati