¿Cómo centrarse en un campo de texto de entrada de formulario al cargar la página usando jQuery?

Resuelto chris asked hace 15 años • 12 respuestas

Probablemente esto sea muy simple, pero ¿alguien podría decirme cómo hacer que el cursor parpadee en un cuadro de texto al cargar la página?

chris avatar Oct 20 '09 07:10 chris
Aceptado

Establezca el foco en el primer campo de texto:

 $("input:text:visible:first").focus();

Esto también funciona con el primer campo de texto, pero puedes cambiar el [0] a otro índice:

$('input[@type="text"]')[0].focus(); 

O puede utilizar el ID:

$("#someTextBox").focus();
DOK avatar Oct 20 '2009 00:10 DOK

Puedes usar HTML5autofocus para esto. No necesitas jQuery u otro JavaScript.

<input type="text" name="some_field" autofocus>

Tenga en cuenta que esto no funcionará en IE9 y versiones anteriores.

Andrew Liu avatar Oct 12 '2014 23:10 Andrew Liu

Seguro:

<head>
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            $("#myTextBox").focus();
        });
    </script>
</head>
<body>
    <input type="text" id="myTextBox">
</body>
Pandincus avatar Oct 20 '2009 00:10 Pandincus

¿Por qué todo el mundo usa jQuery para algo tan simple como esto?

<body OnLoad="document.myform.mytextfield.focus();">
Nijboer IT avatar Sep 09 '2013 09:09 Nijboer IT

Piense en su interfaz de usuario antes de hacer esto. Supongo (aunque ninguna de las respuestas lo dice) que hará esto cuando el documento se cargue usando la ready()función jQuery. Si un usuario ya se ha centrado en un elemento diferente antes de que se haya cargado el documento (lo cual es perfectamente posible), entonces es extremadamente irritante para él que le roben el foco.

Puede verificar esto agregando onfocusatributos en cada uno de sus <input>elementos para registrar si el usuario ya se ha centrado en un campo del formulario y luego no robar el enfoque si lo ha hecho:

var anyFieldReceivedFocus = false;

function fieldReceivedFocus() {
    anyFieldReceivedFocus = true;
}

function focusFirstField() {
    if (!anyFieldReceivedFocus) {
        // Do jQuery focus stuff
    }
}


<input type="text" onfocus="fieldReceivedFocus()" name="one">
<input type="text" onfocus="fieldReceivedFocus()" name="two">
Tim Down avatar Oct 20 '2009 08:10 Tim Down