我有許多表單域跨越頁面摺疊。當按下「tab」鍵來遍歷每個輸入/選擇字段時,它位於頁面底部的下一個字段。焦點或標籤鍵上的輸入按下,移動到屏幕中心
我的一些領域有工具提示,驗證響應和自動建議框出現在字段下方。當切換到該字段時,您無法在頁面摺疊下看到這些元素。
是否有一個javascript或jQuery腳本,可以垂直居中焦點輸入/ textarea/select/button字段而不是對齊到底部的屏幕?
我有許多表單域跨越頁面摺疊。當按下「tab」鍵來遍歷每個輸入/選擇字段時,它位於頁面底部的下一個字段。焦點或標籤鍵上的輸入按下,移動到屏幕中心
我的一些領域有工具提示,驗證響應和自動建議框出現在字段下方。當切換到該字段時,您無法在頁面摺疊下看到這些元素。
是否有一個javascript或jQuery腳本,可以垂直居中焦點輸入/ textarea/select/button字段而不是對齊到底部的屏幕?
您可以綁定到焦點事件,然後計算字段的偏移量並將其居中在屏幕上。
$(':input').focus(function(){
var center = $(window).height()/2;
var top = $(this).offset().top ;
if (top > center){
$(window).scrollTop(top-center);
}
});
我認爲這是對我的問題最簡單的解決方案,但正如所評論的那樣,該操作不是標準操作,並且在大多數情況下可能是令人討厭的操作 - 需要稍微重新定義該問題才能對此解決方案有實際的使用。 – 2009-12-07 00:54:36
做了一些檢查,它得到的值正確,但窗口或文檔scrollTop()不想玩球...我已經改變了這個div id(#div).scrollTop幾乎這樣做,但不是'這與我所期望的身體或窗戶一致。 – 2009-12-07 03:17:18
Firefox和/或Chrome有時會出現問題。你可以試試'$('html,body')。animate({scrollTop:top - center},300);'這對我有用 – schemar 2015-04-10 14:43:08
最簡單的事情將是包括jQuery ScrollTo plugin和jQuery Viewport插件。
然後將每個輸入+相關的其他元素(驗證響應,....)包裝在一個div中。
重點檢查div是否完全可見,如果不使用scrollTo
。完成。
當然這有點膨脹,但如果你可以忍受2個更多的依賴和一個額外的〜4kb這應該工作,而不需要自己做計算。
從上面平滑滾動效果
$(':input').focus(function() {
var center = $(window).height()/2;
var top = $(this).offset().top;
if (top > center) {
$('html, body').animate({ scrollTop: top - center }, 'fast');
}
});
太棒了!多謝,夥計。 – 2017-04-06 00:31:17
我不知道別人一樣,但是屏幕位置的變化我每次更改焦點時會讓我發瘋* *。我希望只有當所需元素之一不完全位於視口內時纔會滾動偏移量。 – 2009-12-03 13:45:00
我的答案也適合你嗎?如果/爲什麼不能滿足你的問題,請提供一個評論 – jitter 2009-12-04 19:21:01
@Pekka我同意這是一個奇特的行爲,並會謹慎使用,因爲它會很煩人。試圖想出一個合適的解決方案 - 也許只有當「標籤」不在焦點上或者可以使幻燈片動畫化時,纔將焦點放在中間。否則,還有哪些其他方法可以保持從頁面摺疊填充的焦點輸入? – 2009-12-07 03:19:38