2010-06-01 9 views
15

Estoy tratando de establecer el foco en un cuadro de texto que se genera de la siguiente manera:¿Cómo establecer el foco en un cuadro de texto Html.TextBoxFor - mvc 2

<%=Html.TextBoxFor(model => model.Email, new { style = "width:190px;Border:0px", maxsize = 190 })%> 

Traté de usar javascript cuales no ayuda mucho:

<script type="text/javascript"> 
     var txtBox = document.getElementById("Email"); 
     if (txtBox != null) txtBox.focus(); 
    </script> 

¿Cómo establecer el foco en un cuadro de texto en Html.TextBoxFor MVC 2?

Respuesta

29

¿Dónde está escribiendo este javascript? Es necesario asegurarse de que el DOM se carga:

window.onload = function() { 
    var txtBox = document.getElementById("Email"); 
    if (txtBox != null) { 
     txtBox.focus(); 
    } 
}; 

también ayudantes HTML podrían generar un ID diferente dependiendo del contexto: por ejemplo, si usted está llamando la TextBoxFor dentro de un editor de plantillas.

Habiendo dicho esto, no es la solución que le recomendaría. Para resolver todos esos problemas que suelen aplicar una clase CSS para el cuadro de texto:

<%=Html.TextBoxFor(
    model => model.Email, 
    new { @class = "email", maxsize = "190" }) %> 

donde email clase se define así:

.email { 
    width: 190px; 
    border: 0; 
} 

y luego usar un popular javascript framework para ajustar el enfoque cuando el DOM es listo:

$(function() { 
    $('input.email').focus(); 
}); 
+0

Así que, en resumen, ¿dónde pongo esa secuencia de comandos que establece el foco – Shimmy

+0

? Podría ponerlo en un archivo javascript que es donde suelen ir los scripts. Si este script se incluye al final del DOM, ya no es necesario que ajuste la llamada de enfoque en un controlador 'document.ready'. –

7

puede usar el enfoque automático en HTML5. <%=Html.TextBoxFor(model => model.Email, new { style = "width:190px;Border:0px", maxsize = 190 ,autofocus = "autofocus" })%>

Cuestiones relacionadas