2011-02-02 18 views
43

Tengo un conjunto de cuadros desplegables generados dinámicamente en mi página. básicamente los clono usando jQuery. ahora quiero capturar el valor seleccionado en cada menú desplegable en evento de cambio.Obtener el valor actual seleccionado en el menú desplegable con jQuery

Intenté algo así que no funcionó.

$('._someDropDown').live('change', function(e) { 
      //debugger; 
      var v = $(this); 
      alert($(this + ':selected').val()); 
      alert($(this).val()); 
     }); 

¿Cómo lo consigo?

+4

'$ (this) .val()' debería funcionar. ¿Qué estás recibiendo de la segunda alerta? –

+1

¡Oigan, muchachos! ¡Es mi error, no estoy estableciendo el valor de las opciones ...! $ (this) .val() funciona bien .. – Amit

Respuesta

56

Esto es lo que necesita :)

$('._someDropDown').live('change', function(e) { 
    console.log(e.target.options[e.target.selectedIndex].text); 
}); 

Para utilizar jQuery nueva on

$(document).on('change', '._someDropDown', function(e) { 
    console.log(this.options[e.target.selectedIndex].text); 
}); 
+0

wow cool ..! esto es mejor ... – Amit

+0

@Amit Esto es JavaScript puro, puede haber algo de jQuery en ello, pero supongo que este método será un poco más rápido y podrás ver lo que está pasando si necesitas depurar algo. – Olical

+0

muchas gracias, esta es la solución para mi problema;) – davidselo

4

Usted puede tratar de:

$("._someDropDown").val(); 
+0

Esto tomará el valor del * primer * desplegable, no el que acaba de cambiar. –

2

probar esto ...

$("#yourdropdownid option:selected").val(); 
+0

no funcionará para mi caso. – Amit

4

Para obtener el valor de un elemento desplegable (seleccionar), simplemente use val().

$('._someDropDown').live('change', function(e) { 
    alert($(this).val()); 
}); 

Si desea el texto de la opción seleccionada, el uso de este:

$('._someDropDown').live('change', function(e) { 
    alert($('[value=' + $(this).val() + ']', this).text()); 
}); 
5

Hay que ver ->

Para obtener el texto

$("#selme").change(function(){ 
$(this[this.selectedIndex]).text(); 
}); 

Para obtener el valor

$("#selme").change(function(){ 
$(this[this.selectedIndex]).val(); 
}); 
79

Para obtener el texto de la opción seleccionada

$("#your_select :selected").text(); 

para obtener el valor de la opción seleccionada

$("#your_select").val(); 
+1

Respuesta perfecta: comparación entre el valor seleccionado y el texto mostrado seleccionado. ¡Gracias! – barrypicker

+0

Cuidado: IE8 no admite el selector de pseudo-clase seleccionado, por lo que puede obtener un valor nulo en ese navegador. Si necesita admitir IE8, puede necesitar algo como: jQuery (jQuery ('opción # selme') [jQuery ('# selme') [0] .selectedIndex]). Text() –

2

Las opciones mencionadas anteriormente no funcionarán porque no forman parte de la especificación CSS (es la extensión jQuery). Después de haber pasado 2-3 días a excavar alrededor de información, he encontrado que la única manera de seleccionar el texto de la opción seleccionada en el menú desplegable es decir:

{ $("select", id:"Some_ID").find("option[selected='selected']")} 

Consulte las notas adicionales a continuación: Debido : seleccionado es una jQuery extensión y no parte de la especificación CSS, las consultas que utilizan: seleccionado no pueden aprovechar el aumento de rendimiento proporcionado por el método DOM querySelectorAll() nativo. Para lograr el mejor rendimiento al usar: seleccionado para seleccionar elementos, primero seleccione los elementos usando un selector puro CSS, luego use .filter(":selected").(Copiada de: http://api.jquery.com/selected-selector/)

12
$("#citiesList").change(function() { 
    alert($("#citiesList option:selected").text()); 
    alert($("#citiesList option:selected").val());    
}); 

citiesList es Identificación del selecto etiqueta

+0

Esta es la mejor respuesta. Más fácil y simple –

+0

Gracias Ron Royston – Dharmesh

+0

Esta fue la respuesta que funcionó para mí con Chrome. Gracias. –

2

Esto es en realidad más eficiente y tiene una mejor legibilidad en mi opinión si desea acceder a su selecto con este o otra variable

$('#select').find('option:selected') 

De hecho, si mal no recuerdo, phpStorm intentará corregir automáticamente el otro método.

2

En caso de que desee el índice del valor seleccionado actual.

$selIndex = $("select#myselectid").prop('selectedIndex')); 
Cuestiones relacionadas