Verschieben Sie den Fokus mit den Pfeiltasten in JavaScript

Ich möchte mit der Pfeiltaste durch alle fokussierbaren Elemente auf meiner Webseite navigieren können. Wenn die Abwärtstaste gedrückt wird, sollte der Fokus auf das fokussierbare Element unter dem aktuellen fokussierten Element verschoben werden. Sie haben die Idee für die anderen Pfeiltasten, wenn es kein fokussierbares Element gibt, zu dem Sie wechseln können, sollte der Fokus derselbe bleiben.

Das ist was ich bisher bekommen habe:

$(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

});

Die Idee war, alle fokussierbaren Elemente zu erhalten und dann dasjenige auszuwählen, das für den Pfeil und den Verschiebungsfokus geeignet ist.

Ich bin nicht in der Lage, diesen Code zum Laufen zu bringen (er enthält einen Fehler), und ich bin mir nicht sicher, ob er überhaupt funktionieren wird.

Danke im Voraus

[EDIT]: Ich denke, ich war ein wenig vage. Ich möchte nicht nur nach links und rechts gehen, sondern auch nach oben und unten.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage