2010-09-02 26 views
35

Tengo un menú desplegable normal que quiero obtener el índice seleccionado actualmente y ponerlo en una variable. Jquery o javascript. Jquery se molestó.cómo obtener el índice seleccionado de un menú desplegable

<select name="CCards"> 
<option value="0">Select Saved Payment Method:</option> 
<option value="1846">test xxxx1234</option> 
<option value="1962">test2 xxxx3456</option> 
</select> 

Respuesta

60

$("select[name='CCards'] option:selected") debe hacer el truco

documentación

Ver jQuery para más detalles: http://api.jquery.com/selected-selector/

ACTUALIZACIÓN: si necesita el índice de la opción seleccionada, es necesario utilizar el jQuery .index() método:

$("select[name='CCards'] option:selected").index() 
+4

Llamar 'index()' es órdenes de magnitud más búsqueda de listas de trabajo ocupado que simplemente usar DOM estándar 'selectedIndex' y no más legible. Me quedaría con la propiedad de DOM simple aquí. – bobince

+0

@bobince: Yo no usaría jQuery para resolver esta pregunta tampoco, pero como OP solicitó una solución jQuery ... :-) – naivists

+0

Esto fue lo más simple y exactamente lo que estaba buscando. La segunda línea funciona perfectamente y la utilicé como var indx = $ ("select [name = 'CCards'] option: selected"). Index(); – user357034

5
<select name="CCards" id="ccards"> 
    <option value="0">Select Saved Payment Method:</option> 
    <option value="1846">test xxxx1234</option> 
    <option value="1962">test2 xxxx3456</option> 
</select> 

<script type="text/javascript"> 

    /** Jquery **/ 
    var selectedValue = $('#ccards').val(); 

    //** Regular Javascript **/ 
    var selectedValue2 = document.getElementById('ccards').value; 


</script> 
24

Esto hará que el índice de la opción seleccionada en el cambio:

$('select').change(function(){ 
 
    console.log($('option:selected',this).index()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="CCards"> 
 
<option value="0">Select Saved Payment Method:</option> 
 
<option value="1846">test xxxx1234</option> 
 
<option value="1962">test2 xxxx3456</option> 
 
</select>

+0

Bien, gracias ... – PaulM

9

el índice real está disponible como una propiedad del elemento select.

var sel = document.getElementById('CCards'); 
alert(sel.selectedIndex); 

puede usar el índice para ir a la opción de selección, donde puede extraer el texto y el valor.

var opt = sel.options[sel.selectedIndex]; 
alert(opt.text); 
alert(opt.value); 
21

Si en realidad se está buscando el número de índice (y no el valor) de la opción seleccionada, entonces sería

document.forms[0].elements["CCards"].selectedIndex 
/* You may need to change document.forms[0] to reference the correct form */ 

o el uso de jQuery

$('select[name="CCards"]')[0].selectedIndex 
1

También puede use :checked para <select> elementos

por ejemplo,

document.querySelector('select option:checked') 
document.querySelector('select option:checked').getAttribute('value') 

Ni siquiera tiene que obtener el índice y luego hacer referencia al elemento por su índice de hermanos.

Cuestiones relacionadas