Ho avuto un problema simile a @ ds111 s. Il mio sito Web è stato spostato verso l'alto dalla tastiera ma non si è spostato verso il basso quando la tastiera è stata chiusa.
Per prima cosa ho provato la soluzione @ ds111 ma avevo due input
campi. Ovviamente, prima la tastiera scompare, quindi si verifica la sfocatura (o qualcosa del genere). Quindi il secondoinput
era sotto la tastiera, quando la messa a fuoco passava direttamente da un ingresso all'altro.
Inoltre, il "salto in alto" non è stato abbastanza buono per me poiché l'intera pagina ha solo le dimensioni dell'iPad. Quindi ho reso la pergamena liscia.
Alla fine, ho dovuto collegare l'ascoltatore di eventi a tutti gli input, anche quelli, che erano attualmente nascosti, quindi il live
.
Tutti insieme posso spiegare il seguente frammento javascript come: Allegare il seguente listener di eventi di sfocatura al presente e a tutti i futuri input
e textarea
(= live
): attendere un periodo di grazia (= window.setTimeout(..., 10)
) e scorrere senza problemi verso l'alto (= animate({scrollTop: 0}, ...)
) ma solo se "nessuna tastiera è mostrato "(= if($('input:focus, textarea:focus').length == 0)
).
$('input, textarea').live('blur', function(event) {
window.setTimeout(function() {
if($('input:focus, textarea:focus').length == 0) {
$("html, body").animate({ scrollTop: 0 }, 400);
}
}, 10)
})
Tenere presente che il periodo di tolleranza (= 10
) potrebbe essere troppo breve o la tastiera potrebbe comunque essere visualizzata anche se non è attiva input
o textarea
è attiva. Naturalmente, se si desidera lo scorrimento più veloce o più lento, è possibile regolare la durata (= 400
)