2012-01-13 10 views
8

He intentado $('#field').focus() y cualquier otro método que se encuentre en Internet. Nada funcionó. Tengo un html simple que reproduce el problema.Cómo enfocar un campo de entrada en el navegador de Android a través de javascript o jquery

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#field').focus(); 
      }); 
    </script> 
</head> 
<body> 
    <input type="text" id="field" name="field"/> 
</body> 
</html> 

Por favor ayuda!

+0

No hay razón para que esto no funcione, a menos que esté usando jQuery Mobile. jQuery Mobile cambia el ciclo de vida del DOM de lo que normalmente esperarías. –

+0

No estoy usando jQuery Mobile, simplemente jQuery. Mira el ejemplo. – Ionut

+0

Seguramente se puede hacer, lo veo en la página de búsqueda de Google, cuando presiona la flecha en las sugerencias. Pero tienen su js minimizado, no puedo entender cómo se hace. – Ionut

Respuesta

3

En realidad, la función general de javascript "focus" está desactivada en el navegador de Android. Por lo tanto, la función de enfoque jQuery está desactivada ya que está utilizando lo anterior.

+6

¿Puede vincular una fuente de más información sobre esto o una solución alternativa? –

+1

https://gist.github.com/pamelafox/3580510 – jantimon

1

si lo vincula a otro evento de clic, funcionará. Esto funciona para mí:

$(document).ready(function() 
    { 

     $('#field').click(function(e){ $(this).focus(); }); 

      $('body').click(function(e) 
      { 
       $('#field').trigger('click'); 
      }) 
    }) 

Aparecerá el teclado del software. trigger() activará cualquier evento que le des. En este caso, el comportamiento predeterminado de hacer clic en el campo == tap == focus == win! Nota: esta llamada está vinculada a otro evento de clic que está sucediendo.

+0

No pude conseguir esto funcionando en Android 2.2 – Zymotik

+0

No pude conseguir esto funcionando en Android 4.1 tampoco ... –

0

click() o focus() solo es no suficiente. Necesita focus() y luego click(). Tenga cuidado con los bucles infinitos si su script se activa mediante un onclick() en un elemento contenedor. El siguiente script me funciona en Chrome para Android 58 y Safari mobile 602.1. Teclado suave apareciendo muy bien.

var target = document.getElementsByTagName("input")[0]; 

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
Cuestiones relacionadas