Javascriptdə arrow düymələrini algılar

Ok tuşlarından birinin basıldığını necə müəyyən etmək olar? Bunu öyrənmək üçün istifadə etdim:

 function checkKey(e) { var event = window.event ? window.event : e; console.log(event.keyCode) } 

Hər bir açar üçün işlədilməsinə baxmayaraq, ok tuşları üçün nəzərdə tutulmamışdı (bəlkə də brauzer default olaraq bu düymələrə keçmək lazımdır).

354
08 апр. mihsathe 08 apr tərəfindən təyin . 2011-04-08 18:09 '11 at 18:09 2011-04-08 18:09
@ 17 cavab

Ok tuşları yalnız onkeydown , onkeypress deyil

Açar kodları:

  • sol = 37
  • up = 38
  • sağ = 39
  • aşağı = 40
599
08 апр. Mark Kahni aprelin 08-də cavab verdi 2011-04-08 18:13 '11 at 18:13 2011-04-08 18:13

Yuxarı və aşağı düyməni üzərinə funksiyanı zəng edin. Hər bir açar üçün fərqli kodlar var.

border=0
 document.onkeydown = checkKey; function checkKey(e) { e = e || window.event; if (e.keyCode == '38') { // up arrow } else if (e.keyCode == '40') { // down arrow } else if (e.keyCode == '37') { // left arrow } else if (e.keyCode == '39') { // right arrow } } 
183
16 февр. Cavab 16 fevralda Ketan tərəfindən verilir. 2012-02-16 14:58 '12 at 2:58 pm 2012-02-16 14:58

Bəlkə də aşağıdakı sözlər:

 document.onkeydown = function(e) { switch (e.keyCode) { case 37: alert('left'); break; case 38: alert('up'); break; case 39: alert('right'); break; case 40: alert('down'); break; } }; 

Demo (Angus Grant istifadəçisi sayəsində): http://jsfiddle.net/angusgrant/E3tE6/

Bu, cross-browser işləməlidir. Çalışmadığı bir brauzer varsa bir şərh buraxın.

Açar kodunu (e.which, e.charCode və window.event əvəzinə e) əldə etmək üçün başqa yollar var, lakin onlar lazım olmur. Onların ən çoxunu http://www.asquare.net/javascript/tests/KeyCode.html ünvanından edə bilərsiniz. Xahiş edirik .keykey kodunu firefox'ta onkeypress ilə işləməyəcəyini unutmayın, ancaq onkeydown ilə işləyir.

85
29 июля '13 в 19:16 2013-07-29 19:16 Cavab verilir 1 '' 29 iyul ' da 19:16' da 2013-07-29 19:16

event.key === "ArrowRight" ...

Daha yeni və daha təmizdir: event.key istifadə event.key . Artıq kefi ədədi kodlar yoxdur! Əgər səyahət edirsinizsə və ya bütün istifadəçilərinizin müasir brauzerlərdən istifadə etdiyini bilirsinizsə, bu istifadə edin!

 node.addEventListener('keydown', function(event) { const key = event.key; // "ArrowRight", "ArrowLeft", "ArrowUp", or "ArrowDown" }); 

Ətraflı emal:

 switch (event.key) { case "ArrowLeft": // Left pressed break; case "ArrowRight": // Right pressed break; case "ArrowUp": // Up pressed break; case "ArrowDown": // Down pressed break; } 

"w", "a", "s", "d" və ya başqa hər hansı bir düyməni yoxlamaq üçün asanlıqla genişləndirə bilərsiniz

Mozilla docs

Desteklenen brauzerlər

PS event.code üçün oxlar üçün eyni

46
27 мая '17 в 7:43 2017-05-27 07:43 cavab Gibolt tərəfindən 27 may 17: 07- da 07:43 2017-05-27 07:43 ilə verilir

Ok düymələri kimi yazdırılmayan düymələr üçün keypress keydown yerinə keydown istifadə edin:

 function checkKey(e) { e = e || window.event; alert(e.keyCode); } document.onkeydown = checkKey; 

Mən tapdığım əsas javascript hadisəsinə ən yaxşı link (məsələn, quirksmode-dan pantolon dayaq): http://unixpapa.com/js/key.html

16
08 апр. Cavab Tim Down tərəfindən verilir 08 Apr. 2011-04-08 18:39 '11 at 18:39 2011-04-08 18:39

Klaviatura kodunun əsas lehinə köhnəlmiş olduğundan, müasir cavab:

 document.onkeydown = function (e) { switch (e.key) { case 'ArrowUp': // up arrow break; case 'ArrowDown': // down arrow break; case 'ArrowLeft': // left arrow break; case 'ArrowRight': // right arrow } }; 
11
05 авг. Joshua Fan tərəfindən verilmiş cavab 05 Av 2017-08-05 23:23 '17 də 11:23 pm 2017-08-05 23:23

Burada bir nümunə tətbiq olunur:

 var targetElement = $0 || document.body; function getArrowKeyDirection (keyCode) { return { 37: 'left', 39: 'right', 38: 'up', 40: 'down' }[keyCode]; } function isArrowKey (keyCode) { return !!getArrowKeyDirection(keyCode); } targetElement.addEventListener('keydown', function (event) { var direction, keyCode = event.keyCode; if (isArrowKey(keyCode)) { direction = getArrowKeyDirection(keyCode); console.log(direction); } }); 
8
18 янв. Cavab 18 yanvar tarixində RobPW tərəfindən verilir . 2015-01-18 02:42 '15 at 2:42 2015-01-18 02:42
 function checkArrowKeys(e){ var arrs= ['left', 'up', 'right', 'down'], key= window.event? event.keyCode: e.keyCode; if(key  key>36  key<41) alert(arrs[key-37]); } document.onkeydown= checkArrowKeys; 
8
08 апр. Cavab kennebec 08 apr verilir . 2011-04-08 18:42 '11 at 18:42 2011-04-08 18:42

Bunu necə etdi?

 var leftKey = 37, upKey = 38, rightKey = 39, downKey = 40; var keystate; document.addEventListener("keydown", function (e) { keystate[e.keyCode] = true; }); document.addEventListener("keyup", function (e) { delete keystate[e.keyCode]; }); if (keystate[leftKey]) { //code to be executed when left arrow key is pushed. } if (keystate[upKey]) { //code to be executed when up arrow key is pushed. } if (keystate[rightKey]) { //code to be executed when right arrow key is pushed. } if (keystate[downKey]) { //code to be executed when down arrow key is pushed. } 
7
31 июля '15 в 19:48 2015-07-31 19:48 Cavab OneStig'e 31 iyul 'da 19:48' ya verilir 2015-07-31 19:48

Mən onları jQuery istifadə edərək tutmaq bacardı:

 $(document).keypress(function (eventObject) { alert(eventObject.keyCode); }); 

Məsələn: http://jsfiddle.net/AjKjU/

5
08 апр. cavab Albireo 08 apr tərəfindən verilir . 2011-04-08 18:14 '11 at 18:14 2011-04-08 18:14

Bu, xrom və firefox iş kodudur.

 <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> <script type="text/javascript"> function leftArrowPressed() { alert("leftArrowPressed" ); window.location = prevUrl } function rightArrowPressed() { alert("rightArrowPressed" ); window.location = nextUrl } function topArrowPressed() { alert("topArrowPressed" ); window.location = prevUrl } function downArrowPressed() { alert("downArrowPressed" ); window.location = nextUrl } document.onkeydown = function(evt) { var nextPage = $("#next_page_link") var prevPage = $("#previous_page_link") nextUrl = nextPage.attr("href") prevUrl = prevPage.attr("href") evt = evt || window.event; switch (evt.keyCode) { case 37: leftArrowPressed(nextUrl); break; case 38: topArrowPressed(nextUrl); break; case 39: rightArrowPressed(prevUrl); break; case 40: downArrowPressed(prevUrl); break; } }; </script> </head> <body> <p> <a id="previous_page_link" href="http://www.latest-tutorial.com">Latest Tutorials</a> <a id="next_page_link" href="http://www.zeeshanakhter.com">Zeeshan Akhter</a> </p> </body> </html> 
4
10 дек. Cavab Zeeshan Akter tərəfindən 10 dekabr. 2013-12-10 23:31 '13 da 23:31 2013-12-10 23:31

Bu mesajı rastlaşdığım qədər bu cavabı da aradım.

Müxtəlif düymələrin əsas kodunu tapmaq üçün başqa bir həll tapdım. Mən qərarımı bölüşmək istədim.

Event.keyCode istifadə edərək konsol / alert dəyərini qeyd etmək üçün sadəcə keyup / keydown olayını istifadə event.keyCode . necə -

 console.log(event.keyCode) // or alert(event.keyCode) 

- Rupam

3
30 янв. 30 yanvarda Rupam Datta tərəfindən verilmiş cavab 2013-01-30 08:43 '13 at 8:43 2013-01-30 08:43

Qısa.

function IsArrows (e) { return (e.keyCode >= 37 e.keyCode <= 40); }

3
18 нояб. Andrey Vaganov tərəfindən verilmiş cavab 18 noyabr 2014-11-18 10:39 '14 saat 10:39 'da 2014-11-18 10:39

Bu kitabxana gözəldir! https://craig.is/killing/mice

 Mousetrap.bind('up up down down left right left right ba enter', function() { highlight([21, 22, 23]); }); 

Bu səhifənin kodunu vurğulamaq üçün tez bir ardıcıllıqla çalıştırmalısınız.

2
27 мая '17 в 9:02 2017-05-27 09:02 Cavab Fandi Susanto tərəfindən 27 May '17 'də 9:02 2017-05-27 09:02' də verilir

keydown keypress keydown deyil, keydown cavab lazımdır.

Bir düyməni basarkən bir şey keydown , keydown Opera'dan başqa bütün brauzerlər üçün işləyir. Opera üçün keydown yalnız ilk keydown işləyir. Opera'dan istifadə etmək üçün:

 document.onkeydown = checkKey; document.onkeypress = checkKey; function checkKey(e) { etc etc 
2
18 февр. Cavab 18 fevralda Alan Finners tərəfindən verilir. 2013-02-18 14:03 '13 'da 14:03' da 2013-02-18 14:03

kontrol kodları %=37> ... və yalnız ok tuşları = 37 = 38 qədər qaldı

 function IsArrows (e) { return ( !evt.shiftKey  (e.keyCode >= 37  e.keyCode <= 40)); } 
0
26 окт. Juver Paredes tərəfindən 26 oktyabrda verilən cavabı 2016-10-26 09:48 '16 'da 9:48' də 2016-10-26 09:48 'də

Ok tuş vuruşlarını aşkar etmək istəyirsinizsə, ancaq xüsusi Javascript lazım deyil

 function checkKey(e) { if (e.keyCode !== 38 || e.keyCode !== 40 || e.keyCode !== 37 || e.keyCode !== 39){ // do something }; } 
0
20 янв. Cavab KitKit Yanvar 20 verilir 2019-01-20 10:30 '19 saat 10:30 'da 2019-01-20 10:30' da

etiketləri ilə bağlı digər suallar və ya sual