Bagaimana saya mendeteksi ketika salah satu tombol panah ditekan? Saya menggunakan ini untuk mencari tahu:
function checkKey(e) {
var event = window.event ? window.event : e;
console.log(event.keyCode)
}
Meskipun bekerja untuk setiap tombol lainnya, itu tidak untuk tombol panah (mungkin karena browser seharusnya menggulir pada tombol-tombol ini secara default).
javascript
keypress
keyboard-events
mihsathe
sumber
sumber
keypress
peristiwa untuk tombol panah, tetapi Anda benar bahwakeydown
selalu berfungsi untuk tombol panah.53
dengankeydown
acara. Anda mendapatkan37
dengankeypress
, yang merupakan hal yang berbedaonkeyup
dan hentikan acara di sana. Namun secara realistis Anda seharusnya tidak memodifikasi perilaku UI dengan Javascript.Fungsi panggilan naik dan turun. Ada kode berbeda untuk setiap tombol.
sumber
e = e ? e : window.event;
Atau:if (typeof(e) === "undefined") { e = window.event; }
keyCode === 32
, bukankeyCode == '32'
ataukeyCode === '32'
.event.key === "Panah" ...
Lebih baru dan lebih bersih: gunakan
event.key
. Tidak ada lagi kode angka yang berubah-ubah! Jika Anda mentransisikan atau tahu bahwa semua pengguna Anda menggunakan browser modern, gunakan ini!Penanganan Verbose:
Anda dapat dengan mudah memperpanjang ini untuk memeriksa
"w", "a", "s", "d"
, atau kunci lainnyaMozilla Docs
Browser yang Didukung
PS
event.code
sama untuk panahsumber
key
dan tidakkeyCode
, itu sudah usang.Mungkin formulasi tersest:
Demo (terima kasih kepada pengguna Angus Grant): http://jsfiddle.net/angusgrant/E3tE6/
Ini harus bekerja lintas browser. Tinggalkan komentar jika ada browser yang tidak berfungsi.
Ada cara lain untuk mendapatkan kode kunci (e.which, e.charCode, dan window.event alih-alih e), tetapi seharusnya tidak diperlukan. Anda dapat mencoba sebagian besar dari mereka di http://www.asquare.net/javascript/tests/KeyCode.html . Perhatikan bahwa event.keycode tidak berfungsi dengan onkeypress di Firefox, tetapi itu bekerja dengan onkeydown.
sumber
Gunakan
keydown
, bukankeypress
untuk kunci yang tidak dapat dicetak seperti tombol panah:Referensi acara kunci JavaScript terbaik yang saya temukan (mengalahkan celana dari quirksmode, misalnya) ada di sini: http://unixpapa.com/js/key.html
sumber
Jawaban modern karena keyCode sekarang tidak digunakan lagi karena kunci :
sumber
Saya percaya metode terbaru adalah:
Ini mengasumsikan pengembang ingin kode aktif di mana saja pada halaman dan klien harus mengabaikan penekanan tombol lainnya. Hilangkan event.preventDefault (); baris jika penekanan tombol, termasuk yang ditangkap oleh pawang ini harus tetap aktif.
sumber
sumber
arrs
luar fungsi? Tidak perlu membuat ulang setiap panggilanBerikut ini contoh implementasi:
sumber
var targetElement = typeof $0 !== 'undefined' ? $0 : document.body;
atau hanya:var targetElement = document.body;
is okBegini cara saya melakukannya:
sumber
Saya bisa menjebak mereka dengan jQuery:
Contoh: http://jsfiddle.net/AjKjU/
sumber
keypress
tidak akan bekerja dengan tombol panah. Anda harus menggunakan$(document).on('keydown', function() {...})
sebagai gantinyaItu adalah kode kerja untuk chrome dan firefox
sumber
Saya juga mencari jawaban ini sampai saya menemukan posting ini.
Saya telah menemukan solusi lain untuk mengetahui kode kunci dari berbagai kunci, berdasarkan masalah saya. Saya hanya ingin membagikan solusi saya.
Cukup gunakan peristiwa keyup / keydown untuk menulis nilai di konsol / mengingatkan penggunaan yang sama
event.keyCode
. Suka-- rupam
sumber
Itu lebih pendek.
function IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
sumber
if ([37,38,39,40].indexOf(e.keyCode)!=-1){ console.log('arrow pressed') }
Perpustakaan ini berbatu! https://craig.is/killing/mice
Anda perlu menekan urutan sedikit cepat untuk menyorot kode di halaman itu.
sumber
Kembali jawaban yang Anda
keydown
tidak perlukeypress
.Dengan asumsi Anda ingin memindahkan sesuatu secara terus-menerus ketika tombol ditekan, saya menemukan itu
keydown
berfungsi untuk semua browser kecuali Opera. Untuk Opera,keydown
hanya memicu pada pers pertama. Untuk mengakomodasi penggunaan Opera:sumber
Tombol panah dipicu pada keyup
onkeydown memungkinkan ctrl, alt, shits
onkeyup memungkinkan tab, panah atas, panah bawah, panah kiri, panah bawah
sumber
Jika Anda menggunakan jquery maka Anda juga bisa melakukan ini,
sumber
kontrol kode kunci
%=37
dan&=38
... dan hanya tombol panah kiri = 37 ke atas = 38sumber
Jika Anda ingin mendeteksi penekanan tombol panah tetapi tidak perlu spesifik dalam Javascript
sumber
Dengan kunci dan ES6.
Ini memberi Anda fungsi terpisah untuk setiap tombol panah tanpa menggunakan sakelar dan juga berfungsi dengan 2,4,6,8 tombol di numpad saat
NumLock
diaktifkan.sumber