El último ejemplo de la documentación de jQuery's focus()
dice
$('#id').focus()
debe hacer que la entrada esté enfocada (activa). Parece que no puedo conseguir que esto funcione.
Incluso en la consola de este sitio, lo intento para el cuadro de búsqueda
$('input[name="q"]').focus()
y no consigo nada. ¿Alguna idea?
En realidad, el ejemplo que has dado para centrarte en este sitio funciona bien, siempre y cuando no estés centrado en la consola. La razón por la que no funciona es simplemente porque no roba el foco de la consola de desarrollo. Si ejecuta el siguiente código en su consola y luego hace clic rápidamente en la ventana de su navegador después, verá que enfoca el cuadro de búsqueda:
setTimeout(function() { $('input[name="q"]').focus() }, 3000);
En cuanto a lo otro, lo que me ha dado problemas en el pasado es el orden de los eventos. No se puede llamar a focus() en un elemento que no ha sido adjuntado al DOM. ¿El elemento que intentas enfocar ya ha sido adjuntado al DOM?
Me doy cuenta de que esto es viejo, pero me encontré con él hoy. Ninguna de las respuestas me funcionó, lo que sí encontré que funcionó fue setTimeout. Quería que mi foco se colocara en el archivo de entrada de un modal, usando el setTimeout funcionó. ¡Espero que esto ayude!