2010-11-19 7 views
24

ho il seguente codice HTMLCome utilizzare JQuery per selezionare l'opzione ennesima

<select onchange="this.form.submit()" name="name"> 
    <option value="9995101E01#17201044055PM">9995101E01#17201044055PM</option> 
    <option value="GRR-Example">GRR-Example</option> 
    <option value="admin">admin</option> 
    <option value="123w">123w</option> 
</select> 

Posso sapere come posso usare jQuery per l'opzione con valore "admin"?

risposta

71
$('select[name=name] option:eq(2)').attr('selected', 'selected'); 

Demo.

9

Ti piace questa:

$("select[name='name'] option:eq(2)").attr("selected", "selected"); 

EDIT:

di fare quello che volete nella vostra nuova modifica, cioè, selezionare l'opzione che ha il valore di admin:

$("select[name='name'] option:contains('admin')").attr("selected", "selected"); 

See it working.

+0

come posso passare una variabile, invece? Sto cercando di ottenere l'opzione $ ('# id': eq (nome_tabella) "). Attr (" selezionato "," selezionato "); – Naveen

+0

Chiamare val() su un elenco di selezione selezionerà automaticamente l'opzione con quel valore Pertanto, dovrebbe funzionare: $ ("selezionare [nome = 'nome']"). Val ('admin'); – Jordan

+0

Mi sono reso conto che utilizzando questo approccio "onchange" non viene attivato, qualcuno conosce un modo per raggiungere questo? –

5

penso che il nth-child pseudo-classe è quello che stai cercando:

$('select option:nth-child(3)').attr('selected', 'selected'); 
2

non mi sarei consiglio valore di impostazione di selezionare utilizzando .attr('selected', 'selected'). È una cattiva pratica. Se due opzioni hanno attributo 'selezionato' - allora qual è il valore di select?

Qui è la versione semplice e facile che funziona:

$('select[name="name"]').val('admin'); 

DEMO

0

Se si desidera selezionare l'opzione all'ennesima e grilletto onchange evento, allora:

function selectOption(nr) { 
    var select = $("select"); 
    if (select.children().length >= nr) { 
     let value = select.find('option:eq(' + nr + ')').val(); 
     select.val(value).change(); 
    } 
} 
0

Proprio aggiornamento nel caso in cui aiuti qualcuno. Avevo un requisito simile ma nel mio caso il menu a discesa è stato memorizzato come variabile JavaScript. Inoltre mi è piaciuto come Denis Matafonov suggerito per rendere selezionata l'opzione in questione. Quindi, ecco l'ultimo blocco di codice:

var target_dd = $('select[name=name]'); 
$(target_dd).val($(target_dd).find('option:eq(2)').html()); 
Problemi correlati