2012-08-16 14 views
5

Estoy tratando de obtener el valor de un menú desplegable en el cambio (y luego cambiar los valores en un segundo menú desplegable).jQuery obtener el valor desplegable seleccionado en el cambio

EDIT: Gracias por todas las respuestas, ya se ha actualizado para añadir el(), pero el código se vuelve nada, sólo una ventana de alerta en blanco

Sin embargo no es nulo o no definido cuando se alerto a cabo la attr (valor) no está definido.

¿Alguna idea sobre lo que me estoy perdiendo?

Aquí está mi código:

<script type="text/javascript"> 
      $(document).ready(function() { 

       var roomID = "0" 
       $('.dropone').load('ajaxdropdown.aspx'); 
       $('.droptwo').load('ajaxdropdown.aspx?drpType=room&roomid=' + roomID); 

       $('.dropone').change(function() { 
       var ts = new Date().getTime(); 
       alert($(this).val) 

        $(".droptwo").empty(); 
        $(".droptwo").load("ajaxdropdown.aspx?drpType=room&roomid=" + $(this).attr("value") + "&ts=" + ts); 
       }); 

      });   
     </script> 
+0

.dropone es un elemento seleccionado? – fliim

+0

Olvidó el '()' en '$ (this) .val()' –

Respuesta

11

val es un método, no una propiedad.

usarlo como val()

Si usted lo está utilizando muchos lugares, me asignarlo a una variable local y utilizarlo a partir de entonces.

También puede usar la función $.now() para obtener la marca de tiempo única. Es igual a DategetTime();

$('.dropone').change(function() {  
    var item=$(this); 
    alert(item.val()) 
    $(".droptwo").empty(); 
    $(".droptwo").load("ajaxdropdown.aspx?drpType=room 
         &roomid=" +item.attr("value") + "&ts=" + $.now()); 
}); 
3

Debe obtener el valor utilizando un método, no una propiedad. Utilice:

alert($(this).val()) 
+0

Gracias por esto, ahora no devuelve nada, no está definido, pero no se devuelve nada – TMB87

+0

@TomBeech - Parece un problema de HTML. ¿Puedes mostrar el HTML para tu menú desplegable? – jeff

1

Añadir paréntesis a su val: alert($(this).val())

9
$('.dropone').change(function() { 
    var val = $(this).val(); 

    // OR 

    var val = this.value; 
}) 
0

También se puede obtener atributos personalizados en el menú desplegable de la siguiente manera;

 $('.someclass').change (function() { 
       var val = this.value; 
       alert(val);          //selected value 

       var element = $(this).find('option:selected'); // assign selected element 
       var myTag = element.attr("aTag");    // get attribute by name 
       alert(myTag); 
    }); 


<option name='somename' id='someid' aTag='123' value='XYZ'>XYZ</option> 
Cuestiones relacionadas