Tengo múltiples campos de selección cada uno con múltiples opciones. Entonces, al usar jquery para obtener el contenido de las opciones seleccionadas respectivas, podría obtener el contenido de las opciones seleccionadas. Sin embargo, esto funciona para el primer campo de selección. Pero, no funciona para otros. Otros siguen haciendo referencia al contenido del primer campo de selección de opciones seleccionadas, en lugar del propietario. ¡Por favor guíame! ¡Gracias!

My Select fields

<select id="resource_dd" name="resource_dd">
    <option selected="selected" value="nil1">No resources.</option>
    <option value="1">Week1</option>
    <option value="2">Resource1</option>
</select>


<select id="module_dd" name="module_dd">
    <option selected="selected" value="nil2">No restriction.</option>
    <option value="1">IT1234</option>
    <option value="2">IT2345</option>
</select>

Jquery para recuperar el contenido seleccionado.

$("#module_dd").change(function ( event ) {
    var option = $("this").children();
    var module_id = $(option+":selected").val(); //module_id get 'nil1' as content instead of nil2

});
0
Sydnal 3 ago. 2011 a las 18:27

5 respuestas

La mejor respuesta

Simplemente intente esto, le dará el valor seleccionado.

$("#module_dd").change(function ( event ) {
  var module_id = $(this).val(); 
});
2
ShankarSangoli 3 ago. 2011 a las 14:33

En primer lugar, debería decir $(this) en lugar de $("this").

Segundo, $(event.target) es probablemente más apropiado aquí.

Tercero, usar .children como en $(event.target).children(":selected") te dará lo que quieres.

1
Eli Courtwright 3 ago. 2011 a las 14:33

Consulte la respuesta de Eli Courtwright, pero además de eso, debe hacer algo como $("select") o $("#module_dd, #resource_dd") para apuntar a ambos campos select.

0
ayyp 3 ago. 2011 a las 14:38

Código de problema

var option = $("this").children();
var module_id = $(option+":selected").val();

No puede concatenar una cadena de selector a un objeto de colección jQ. Debe filtrar la colección de opciones para aquellos que se seleccionan por:

var option = $( this ).children(":selected");

O

var option = $( this ).children();
var module_id = option.filter(":selected").val();
0
JAAulde 3 ago. 2011 a las 14:38

Esto sucede porque hace referencia a $("#module_dd").

Debe agregar otra función y cambiarla a $("#resource_dd") para obtener el otro campo select.

0
Jason Gennaro 3 ago. 2011 a las 14:32