2012-05-06 11 views
10

Ho una DropDownList ASP.NET come questo:selectedIndex non è definito con jQuery in DropDownList

<asp:DropDownList ID="ddlMyDropDown" runat="server"> 
     <asp:ListItem>Please pick one</asp:ListItem> 
    <asp:ListItem>option1</asp:ListItem> 
    <asp:ListItem>option2</asp:ListItem> 
    <asp:ListItem>option3</asp:ListItem> 
    <asp:ListItem>option4</asp:ListItem> 
    </asp:DropDownList> 

Un CustomValidator è legato ad esso, per vedere se l'utente ha scelto un'opzione. Chiama il seguente JavaScript/JQuery funzione:

function checkValueSelected(sender, args) { 
     var index = $("#ContentPlaceHolder1_ddlMyDropDown").selectedIndex; 
     args.IsValid = index > 0; 
    } 

ma indice è undefined quando il debug con Firebug. Il selettore JQuery trova select#ContentPlaceHolder1_ddlMyDropDown, quindi questo è non il problema. La proprietà selectedIndex non esiste?

Su internet ho trovato esempi che funzionano quasi allo stesso modo e funzionano. Sono abbastanza perso su questo ...

Aggiornamento

Questo è ciò che Firebug mostra:

inspect

Come si può vedere, la variabile control è una sorta di array, con una voce che è in realtà ciò che voglio essere in control. Non penso che il selettore ID di JQuery restituisca più valori?

+0

Potete utilizzare la proprietà asp.net per controllare questo? – sarwar026

+0

@ sarwar026 Ho scoperto cosa c'è che non va, andando a modificare la domanda. – MarioDS

risposta

7

selectedIndex non è lì ...

si dovrebbe usare prop di jQuery ...

var index = $("#ContentPlaceHolder1_ddlMyDropDown").prop('selectedIndex'); 

o

var index = $("#ContentPlaceHolder1_ddlMyDropDown").get(0).selectedIndex; 
+0

Grazie, ho appena letto che '$ (" # id ")' NON è lo stesso di 'document.getElementById (" id ").' – MarioDS

+0

@MarioDeSchaepmeester è lo stesso .... chi te l'ha detto? –

+0

Vedere i commenti [qui] (http://api.jquery.com/id-selector/). Apparentemente non è la stessa cosa, guarda il mio screenshot di Firebug. Il selettore id restituisce un array, restituirà un elemento DOM se fatto da 'document.getElementById'. – MarioDS