2012-08-16 16 views
5

Sto cercando di ottenere il valore di un menu a discesa sul cambiamento (e quindi modificare i valori in un secondo menu a discesa).jQuery ottiene il valore del menu a discesa selezionato in modifica

EDIT: Grazie per tutte le risposte, ho aggiornato per aggiungere il(), ma il codice sta tornando nulla, solo una finestra di avviso vuota

Tuttavia non null o undefined quando ho a segnalare che la attr (valore) non è definito.

Qualche idea su cosa mi manca?

Ecco il mio codice:

<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 è un elemento selezionato? – fliim

+0

hai dimenticato il '()' in '$ (this) .val()' –

risposta

11

val è un metodo, non una proprietà.

utilizzarlo come val()

Se si sta usando molti luoghi, vorrei assegnarlo a una variabile locale e utilizzarlo in seguito.

Inoltre è possibile utilizzare la funzione $.now() per ottenere la data e l'ora uniche. È uguale 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

È necessario ottenere il valore utilizzando un metodo, non una proprietà. Utilizzare questa:

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

Grazie per questo, ora non restituisce nulla, non indefinito tuttavia non viene restituito nulla – TMB87

+0

@TomBeech - Sembra un problema HTML. Puoi mostrare l'HTML per il tuo menu a discesa? – jeff

1

Aggiungi parentesi tonde alla val: alert($(this).val())

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

    // OR 

    var val = this.value; 
}) 
0

È inoltre possibile ottenere attributi personalizzati dal menu a discesa, come di seguito;

 $('.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> 
Problemi correlati