He encontrado las respuestas de Glenn Slaven y de Kris/Alex conseguirme más cerca de una solución a mi problema particular con el establecimiento de foco en un control ASP.NET TextBox que tenía un AutoCompleteExtender adjunto. El document.getElementById (focusControlID) .focus() siguió arrojando un error de javascript que implicaba que document.getElementById estaba devolviendo un objeto nulo. La variable focusControlID devolvía el valor ClientID del tiempo de ejecución correcto para el control TextBox. Pero por alguna razón, a la función document.getElementById no le gustó.
Mi solución fue lanzar jQuery a la mezcla, ya que ya lo estaba usando para pintar el fondo de cualquier control que tuviera foco, además de forzar la tecla Enter para desplazarme por el formulario en lugar de disparar una devolución de datos.
función Mi setFocus terminó con este aspecto:
function setFocus(focusControlID) {
$('#' + focusControlID).blur();
$('#' + focusControlID).focus();
}
Esto se deshizo del error de ejecución JavaScript, puso el foco en el control TextBox deseada, y se coloca el cursor dentro del control también.Sin desenfocar primero y luego enfocar, el control se resaltaría como si tuviera enfoque, pero el cursor aún no estaría en el control. El usuario todavía tendría que hacer clic dentro del control para comenzar a editar, lo que sería una molestia UX.
También tuvo que aumentar el tiempo de espera de 100 a 300. Su kilometraje puede variar ... Mi
Estoy de acuerdo con todo el mundo que este es un truco. Pero desde la perspectiva del usuario final, no ven este código. El truco para ellos es si tienen que hacer clic manualmente dentro del control en lugar de simplemente colocarse automáticamente dentro del control y escribir las primeras letras para activar la función de búsqueda automática. Entonces, felicitaciones a todos los que proporcionaron sus hacks.
Espero que esto sea útil para otra persona.
+1 por admitir que es un hack :) – edosoft