矢印キーを使用して、Webページ上のすべてのフォーカス可能な要素をナビゲートできるようにしたいと考えています。したがって、下キーを押すと、フォーカスは現在フォーカスされている要素の下にあるフォーカス可能な要素に移動するはずです。他の矢印キーのアイデアが得られます。シフト先のフォーカス可能な要素がない場合、フォーカスは同じままである必要があります。
これは私がこれまでに得たものです:
$(document).keydown(function(e){
if (e.keyCode == 37) { //left
var offset = $("*:focus").offset();
var allElements = $("#container").find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]');
var arr = jQuery.makeArray(allElements);
var topLeft = offset.left
var minus = topLeft;
var currentElement = $("*:focus");
for(var i = 0; i < arr.length; i++)
{
if ( (arr[i].offset().left < offset.left) // This doesn't work for some reason
&& ((offset.left - arr[i].offset().left) < minus))
{
currentElement = arr[i];
minus = offset.left - arr[i].offset().left;
topLeft = arr[i].offset().left;
}
currentElement.focus();
}
alert( "left pressed" );
return false;
}
// Other Keys
});
アイデアは、すべてのフォーカス可能な要素を取得し、選択するよりも、矢印に適した要素を選択してフォーカスをシフトすることでした。
このコードを機能させることができず(エラーが含まれています)、機能するかどうかも完全にはわかりません。
事前にThnx
[編集]:私は少し漠然としていたと思います。左右だけでなく、上下にも行きたいです。