मुझे @ ds111 s से भी ऐसी ही समस्या थी। मेरी वेबसाइट को कीबोर्ड द्वारा पुश किया गया था लेकिन कीबोर्ड बंद होने पर नीचे नहीं गया।
पहले मैंने @ ds111 समाधान की कोशिश की, लेकिन मेरे पास दो input
क्षेत्र थे। बेशक, पहले कीबोर्ड चला जाता है, फिर धब्बा (या ऐसा कुछ) होता है। तो दूसरा input
कीबोर्ड के नीचे था, जब फ़ोकस सीधे एक इनपुट से दूसरे इनपुट पर जाता था।
इसके अलावा, "जंप अप" मेरे लिए पर्याप्त नहीं था क्योंकि पूरे पृष्ठ में केवल आईपैड का आकार है। इसलिए मैंने स्क्रॉल को आसान बना दिया।
अंत में, मुझे इवेंट श्रोता को सभी इनपुट्स से जोड़ना पड़ा, यहां तक कि उन, जो वर्तमान में छिपे हुए थे, इसलिए live
।
सभी एक साथ मैं निम्नलिखित जावास्क्रिप्ट स्निपेट को समझा सकता हूं: वर्तमान और सभी भविष्य के लिए निम्न ब्लर ईवेंट श्रोता संलग्न करें input
और textarea
(= live
): एक ग्रेस पीरियड (= window.setTimeout(..., 10)
) प्रतीक्षा करें और आसानी से टॉप (= animate({scrollTop: 0}, ...)
) पर स्क्रॉल करें लेकिन केवल "कोई कीबोर्ड नहीं" दिखाया गया "(= 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)
})
ध्यान रखें, कि अनुग्रह अवधि (= 10
) बहुत छोटा हो सकता है या हालांकि कोई कुंजीपटल अभी भी दिखाया जा सकता है input
या textarea
ध्यान केंद्रित है। बेशक, यदि आप स्क्रॉलिंग को तेज़ या धीमा करना चाहते हैं, तो आप अवधि (= 400
) समायोजित कर सकते हैं