2012-06-21 15 views
5

Estamos teniendo un problema donde cuando abrimos una ventana modal estamos tratando de establecer el foco en el primer elemento de entrada en el modal que no es de tipo oculto. esto es lo que estamos tratando:jquery .focus no funciona para la entrada: primero

$("#test-overlay input[type!=hidden]:first").focus(); 

Sin embargo, esta llamada funciona:

$("#test-overlay #loginInput").focus(); 

El campo de entrada tiene un id de loginInput.

¿Alguna idea?

+0

Script de prueba de concepto simple en jsFiddle por favor. – epascarello

Respuesta

3

El problema se debe al orden de precedencia en el que jQuery interpreta el selector. Pruebe lo siguiente:

$('#test-overlay input').not('[type=hidden]').first().focus(); 

Esto tiene la ventaja añadida de no utilizar la :first y no atribuir igual a los selectores ya que son jQuery consultas específicas y el uso de éstos no pueden aprovechar el aumento de rendimiento proporcionado por el nativo DOM querySelectorAll() método.

+0

Eso está funcionando. ¡Muchas gracias! :) – NunuJ

+0

Esto funciona bien con Firefox y Chrome, pero no con IE. ¿Alguna idea? – NunuJ

+0

@NunuJ Lo anterior debería estar bien en IE. ¿Se llama el código cuando el documento está listo? –