2012-01-13 12 views
8

Ho provato $('#field').focus() e qualsiasi altro metodo trovato su Internet. Niente ha funzionato Ho un semplice codice HTML che riproduce il problema.Come mettere a fuoco un campo di immissione sul browser Android tramite 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> 

Please help!

+0

Non c'è motivo per cui questo non dovrebbe funzionare, a meno che non si stia utilizzando jQuery Mobile. jQuery Mobile cambia il ciclo di vita del DOM da ciò che normalmente ti aspetti. –

+0

Non sto usando jQuery Mobile, semplicemente jQuery. Guarda l'esempio. – Ionut

+0

Si può sicuramente fare, lo vedo sulla pagina di ricerca di Google, quando si preme la freccia sui suggerimenti. Ma hanno il loro js minimizzato, non riesco a capire come sia fatto. – Ionut

risposta

3

In realtà, la funzione javascript generale "focus" è disattivata nel browser Android. Quindi, la funzione di fuoco jQuery è disattivata poiché utilizza il precedente.

+6

Puoi collegare una fonte di ulteriori informazioni su questo o una soluzione alternativa? –

+1

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

1

se lo si lega ad un altro evento click funzionerà. Questo funziona per me:

$(document).ready(function() 
    { 

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

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

Apparirà la tastiera software. trigger() attiverà qualsiasi evento tu gli dai. In questo caso il comportamento predefinito di fare clic sul campo == tocca == focus == vinci! Nota: questa chiamata è legata a un altro evento di clic in corso.

+0

Non riuscivo a farlo funzionare su Android 2.2 – Zymotik

+0

Non riuscivo a farlo funzionare su Android 4.1 neanche ... –

0

click() o focus() da solo è non sufficiente. È necessario focus() quindi click(). Fai attenzione ai loop infiniti se il tuo script è attivato da un onclick() su un elemento contenitore. Lo script qui sotto funziona per me su Chrome per Android 58 e Safari mobile 602.1. Tastiera morbida che si apriva bene.

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

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
Problemi correlati