2014-06-06 14 views
6

Così ho letto in giro e non riesco a risolvere la mia vita in modo efficace.Applicazione web iPad: Impedisci messa a fuoco AFTER chiamata ajax

In breve, ho un'app Web realizzata per l'iPad, che funziona come dovrebbe. Tuttavia, ho un modulo Ajax che inoltra anche come dovrebbe. Ma, dopo il callback e ho cancellato/ripristinato il mio modulo, "iPad" si concentra automaticamente su un input e riapre la tastiera. Questo è lontano dall'ideale.

Sono riuscito a modificarlo, ma non è ancora perfetto. Il codice qui sotto è eseguito sul mio callback ajax, che funziona - eccetto che c'è ancora un lampo della tastiera che si apre e si chiude rapidamente.

Nota, il mio codice non funzionerà se non utilizzo setTimeout. Inoltre, dal mio punto di vista, document.activeElement.blur(); funziona solo quando c'è un evento click, quindi ne ho attivato uno tramite js.

IN ALTRE PAROLE, COME POSSO PREVENIRE CHE LA TASTIERA RIPRENDI DOPO LA CHIAMATA AJAX SU WEB APP?

PS: la chiamata Ajax funziona correttamente e non apre la tastiera in Safari sull'iPad, solo modalità web app.

Ecco il mio codice:

hideKeyboard: function() { 

     // iOS web app only, iPad 
     IS_IPAD = navigator.userAgent.match(/iPad/i) != null; 

     if (IS_IPAD) { 
      $(window).one('click', function() { 
       document.activeElement.blur(); 
      }); 
      setTimeout(function() { 
       $(window).trigger('click'); 
      }, 500); 
     } 
    } 

Forse è legato a come sto compensazione mie forme, quindi ecco che il codice. Nota, tutti gli input hanno tabindex = "- 1" pure.

risposta

4

JUST, come ho postato un dio dannatamente generosità, ho capito - per errore. Vai figura ... lol

Per chiunque abbia avuto a che fare con questo problema, ho avuto un div "overlay" posizionato absolute sul modulo (utilizzato come messaggio di ringraziamento visualizzato sul successo di ajax). Apparentemente questo stava causando l'apertura della tastiera dopo la chiamata Ajax. Per motivi di interfaccia utente, ho cambiato la posizione in position: fixed; e il problema evidenziato nella mia domanda iniziale sembra essersi risolto misteriosamente. Strano ... mi piacerebbe sapere perché se qualcuno lo sa ... brutale.

+0

è super-utile per gli altri, grazie! – Fattie

Problemi correlati