キーボードの矢印キーでリンクのフォーカスを移動する処理を実装したのでメモしておきます。
サンプルコード
矢印キーの上下でフォーカスを移動するようにしてみます。
HTML
<ul> <li><a href="#">save</a></li> <li><a href="#">load</a></li> <li><a href="#">Q.save</a></li> <li><a href="#">Q.load</a></li> <li><a href="#">config</a></li> </ul>
JavaScript
$(window).on('keydown', function(e) {
if(e.keyCode === 38) { // ↑
focus_prev();
return false;
}
if(e.keyCode === 40) { // ↓
focus_next();
return false;
}
});
/**
* フォーカスを前に移動する
*/
function focus_prev() {
// 現在のフォーカスを取得
var currentFocusIndex = $('a').index($(':focus'));
if(currentFocusIndex > -1) {
for (var i = 0; i < $('a').length; i++) {
if(i === currentFocusIndex && i > 0) {
$('a').eq(i - 1).focus();
}
}
}
}
/**
* フォーカスを次に移動する
*/
function focus_next() {
// 現在のフォーカスを取得
var currentFocusIndex = $('a').index($(':focus'));
if(currentFocusIndex > -1) {
for (var i = 0; i < $('a').length; i++) {
if(i === currentFocusIndex && i < $('a').length - 1) {
$('a').eq(i + 1).focus();
}
}
} else {
$('a').eq(0).focus();
}
}
キーコードを変更することで、左右の矢印キーで移動させることもできます。
JavaScript
$(window).on('keydown', function(e) {
if(e.keyCode === 37) { // ←
focus_prev();
return false;
}
if(e.keyCode === 39) { // →
focus_next();
return false;
}
});
/**
* フォーカスを前に移動する
*/
function focus_prev() {
// 現在のフォーカスを取得
var currentFocusIndex = $('a').index($(':focus'));
if(currentFocusIndex > -1) {
for (var i = 0; i < $('a').length; i++) {
if(i === currentFocusIndex && i > 0) {
$('a').eq(i - 1).focus();
}
}
}
}
/**
* フォーカスを次に移動する
*/
function focus_next() {
// 現在のフォーカスを取得
var currentFocusIndex = $('a').index($(':focus'));
if(currentFocusIndex > -1) {
for (var i = 0; i < $('a').length; i++) {
if(i === currentFocusIndex && i < $('a').length - 1) {
$('a').eq(i + 1).focus();
}
}
} else {
$('a').eq(0).focus();
}
}
コメントが承認されるまで時間がかかります。