2009-08-04 10 views
18

Mi stavo chiedendo se è possibile passare attraverso più opzioni di selezione e ottenere i loro valori e il testo (se uno è selezionato ottenere il valore e il testo, se è selezionato 2 ottenere entrambi i loro valori e testo e così via)come iterare attraverso più opzioni di selezione con jquery

Ho 15 caselle di selezione in una sola pagina?

qualsiasi aiuto sarebbe apprezzato.

<form> 
     <select class="select" name="select3" id="select3"> 
      <option value="0">0</option> 
      <option value="1.99">1</option> 
      <option value="1.99">2</option> 
      <option value="1.99">3</option> 
      <option value="1.99">4</option> 
      <option value="1.99">5</option> 
      <option value="1.99">6</option> 
      <option value="1.99">7</option> 
      <option value="1.99">8</option> 
     </select> 
     </form> 

    <form> 
     <select class="select" name="select" id="select"> 
      <option value="0">0</option> 
      <option value="1.99">1</option> 
      <option value="1.99">2</option> 
      <option value="1.99">3</option> 
      <option value="1.99">4</option> 
      <option value="1.99">5</option> 
      <option value="1.99">6</option> 
      <option value="1.99">7</option> 
      <option value="1.99">8</option> 
      </select> 
    </form> 

tutte le opzioni di selezione hanno la stessa classe.

grazie

risposta

40

Questo avviserà tutto il testo ei valori delle opzioni selezionate (per tutti seleziona nella pagina):

$('select > option:selected').each(function() { 
    alert($(this).text() + ' ' + $(this).val()); 
}); 

Sede Nucleo/cad e selettori/selezionate:

http://docs.jquery.com/Core/each

http://docs.jquery.com/Selectors/selected

+0

non dovrebbe essere: $ ('# selezionare> ... – jon

+0

suo un caso d'uso poco definito, dove la classe, il nome, l'ID e tag sono tutti uguali nome. $ ('seleziona> ..., $ (' # seleziona> ..., $ (. seleziona ... funzionerà tutti –

3

Questa funzione restituirà una matrice di coppie testo/valore per i selezioni corrispondenti alla classe data.

function getSelects(klass) { 
    var selected = []; 
    $('select.' + klass).children('option:selected').each(function() { 
     var $this = $(this); 
     selected.push({ text: $this.text(), value: $this.val() }); 
    }); 
    return selected; 
} 
0
//Another option 

var selected = []; 

$('select :has(:selected)').each(function(){ 

    var $this = $(this); 
    selected.push({ text: $this.text(), value: $this.val()); 

}); 

return selected; 
2

Se tutte le caselle di selezione Iniziamo con una id simile ("select_1", "select_2", "select_3", ecc), si può solo fare:

var arr = []; 
$("select[id^='select_']").children('option:selected').each(function(){ 
    //you will do this once for every selected item... 
} 

Questo ti consente di scorrere solo determinate caselle di selezione, nel caso in cui tu abbia più raggruppamenti.

+0

Grazie per la risposta. Posso usare anche una funzione .change nel codice sopra , come .... .change.each (function() { – amir

+0

beh se si termina la modifica in una funzione anonima sì .change (function() { $ ('select'). each ..... }); – redsquare

6

per optgroups ...

$("select[id^='desu']").children('optgroup').children('option:selected').each( 
    function(id, element) { 
     document.write(element.title); 
    } 
); 
+0

Grazie per questo Montana! –

+0

aha la funzione children() - proprio quello che stavo cercando! –

Problemi correlati