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.
è super-utile per gli altri, grazie! – Fattie