lunes, 11 de mayo de 2009

Acceder a un control dentro de un ContentPlaceHolder desde JavaScript

Un pequeño problema a la hora de usar las MasterPage es que al introducir controles dentro de los ContentPlaceHolder, el ClientId de estos controles aparece modificado, se le añade un prefijo con el nombre de su contenedor (ContentPlaceHolder). Esto solo nos afecta si queremos acceder a estos controles desde el cliente (javascript) . Un ejemplo seria un TextBox con el Id = txtNombre, este apareceria en nuestro codigo html como
ctl00_ContentPlaceCuerpoPagina_txtNombre

La solución fácil seria acceder usando el nombre completo

document.getElementById("ctl00_ContentPlaceCuerpoPagina_txtNombre").value

Esto seria poco elegante y ademas peligroso, ya que si en algun momento se cambia el nombre
del ContentPlaceHolder,esa sentencia ya no seria valida. Una forma efectiva de acceder al control seria.


document.getElementById('<%=txtNombre.ClientID %>').value

1 comentario:

Joel Berrospi dijo...

Muy buen dato, me ayudo bastante en lo que estoy haciendo gracias!!