2015-11-11 56 views
3

上我有以下scrollTop的功能:jQuery的scrollTop的和重點元素

<a onclick="jQuery('html,body').animate({scrollTop:0},'slow');return false;" class="well well-sm" href="#"> 
        <i class="uxf-icon uxf-up-open-large"></i><span class="sr-only">${message:backToTop}</span></a> 

但是,當您使用鍵盤來瀏覽焦點不會去頂。它仍然在頁腳中。有沒有辦法把焦點轉移到以下DIV:

<div id="top" tabindex="-1"></div> 
+0

「...鍵盤導航...」你的意思是標籤+輸入元素? – Kriggs

+0

@Kriggs,是的我的意思是標籤,然後輸入。 – j00m

回答

2

的視覺焦點從鍵盤焦點不同,您可以使用focus()功能定義鍵盤焦點

<a onclick="jQuery("#top").focus();return false;" class="well well-sm" href="#">...</a> 

這可以共同地與動畫功能一起使用。

+0

謝謝。那正是我所期待的。事實上,我早些時候嘗試過,但沒有返回false :-( – j00m

1

動畫滾動到元素的頂部,然後設定一個焦點:

<script> 
    function scroll() { 
     $('html, body').animate({ 
      scrollTop: $('#top').offset().top 
     }, 'slow', function() { 
      $('#top').focus(); 
     }); 
    } 
</script> 
<a onclick="scroll(); return false;" class="well well-sm" href="#">...</a> 
+0

這似乎並沒有改變重點。因爲它是在onclick中,我需要返回false嗎? – j00m

+0

我也在滾動結束時添加了焦點。是的,你應該使用'return false;'在那裏。 –

0

的問題是,你有assignd點擊它,而進入一個按鍵,你必須將其設置兩個,這裏是用jQuery代表團做這件事:

function animateToTop() { 
    $('html,body').animate({ 
     scrollTop: $('#top').offset().top 
    }, 'slow'); 
} 

$('#aSendToTop').on('click keypress', 
    function (e) { 
     // mouse 1 has keyCode 1, while enter is keycode 13 
     if([1, 13].indexOf(e.which) > -1) animateToTop(); 
    } 
); 

JSFiddle

+0

錯誤,'onclick'與鍵盤一起使用時''[href]'效果很好。 (這是一個例外) – Adam

+0

@Adam沒有按鍵的解決方案是什麼? – Kriggs

+1

請參閱WCAG SCR35:*雖然「onclick」聽起來像是綁定到鼠標,但onclick事件實際上已映射到鏈接或按鈕的默認操作。* – Adam