2012-05-06 25 views
10

Tengo una lista desplegable ASP.NET como esto:selectedIndex no está definido en la lista desplegable con jQuery

<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 está obligado a ella, para ver si el usuario elige una opción. Se llama a la siguiente JavaScript/jQuery función:

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

pero el índice es undefined al depurar con Firebug. El selector JQuery encuentra select#ContentPlaceHolder1_ddlMyDropDown, por lo que no es el problema. ¿La propiedad selectedIndex no existe?

En Internet encontré ejemplos que hacen casi lo mismo y funciona. Estoy bastante perdido en éste ...

actualización

Esto es lo que Firebug muestra:

inspect

Como se puede ver, la variable control es una especie de matriz, con una entrada que es realmente lo que quiero ser en control. No creo que el selector de ID de JQuery devuelva varios valores.

+0

¿Se puede utilizar la propiedad asp.net para comprobar esto? – sarwar026

+0

@ sarwar026 Descubrí lo que está mal, voy a editar la pregunta. – MarioDS

Respuesta

7

selectedIndex no está ahí ...

se debe utilizar prop de jQuery ...

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

o

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

Gracias, acabo de leer que '$ (" # id ")' NO es lo mismo que 'document.getElementById (" id ").' – MarioDS

+0

@MarioDeSchaepmeester es el mismo ... ¿quién te dijo eso? –

+0

Ver los comentarios [aquí] (http://api.jquery.com/id-selector/). Aparentemente no es lo mismo, mira mi captura de pantalla de Firebug. El selector de id devuelve una matriz, devolverá un elemento DOM si está hecho por 'document.getElementById'. – MarioDS

Cuestiones relacionadas