diff --git a/AUTHORS.rst b/AUTHORS.rst
index 58fed35c9..8692c03d4 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -168,4 +168,5 @@ features or generally made searx better:
 - Milad Laly @Milad-Laly
 - @llmII
 - @blob42 `<https://blob42.xyz>`_
-- Paolo Basso `<https://github.com/paolobasso99>`
\ No newline at end of file
+- Paolo Basso `<https://github.com/paolobasso99>`
+- Bernie Huang `<https://github.com/BernieHuang2008>`
\ No newline at end of file
diff --git a/searx/static/themes/simple/src/js/main/keyboard.js b/searx/static/themes/simple/src/js/main/keyboard.js
index 4a6f9d384..5c02acbfd 100644
--- a/searx/static/themes/simple/src/js/main/keyboard.js
+++ b/searx/static/themes/simple/src/js/main/keyboard.js
@@ -213,6 +213,7 @@ searxng.ready(function () {
       }
 
       var next, results = document.querySelectorAll('.result');
+      results = Array.from(results);  // convert NodeList to Array for further use
 
       if (typeof effectiveWhich !== 'string') {
         next = effectiveWhich;
@@ -233,16 +234,10 @@ searxng.ready(function () {
           }
           break;
         case 'down':
-          next = current.nextElementSibling;
-          if (next === null) {
-            next = results[0];
-          }
+          next = results[results.indexOf(current) + 1] || current;
           break;
         case 'up':
-          next = current.previousElementSibling;
-          if (next === null) {
-            next = results[results.length - 1];
-          }
+          next = results[results.indexOf(current) - 1] || current;
           break;
         case 'bottom':
           next = results[results.length - 1];