Lebih
Menentukan apakah JavaScript e.keyCode cetak (non-control) karakter
I'd hanya ingin tahu kisaran(s) dari JavaScript `keyCode yang sesuai dengan typeable karakter; atau alternatif, berbagai non-typeable (kontrol) karakter seperti backspace, melarikan diri, command, shift, dll. jadi aku bisa mengabaikan mereka.
Alasan saya bertanya adalah menelepon String.fromCharCode()
ini mengakibatkan karakter aneh untuk tombol kontrol. Misalnya saya mendapatkan "[" untuk meninggalkan perintah, "%" untuk panah kiri. Keanehan seperti itu.
52
5
Keydown akan memberikan anda kode kunci ditekan, tanpa modifikasi.
Hanya tombol angka, tombol huruf dan spasi akan memiliki keycodes menghubungkan ke
String.fromCharCode
karena menggunakan nilai-nilai Unicode.Menekan tombol akan menjadi charCode representasi dari teks yang dimasukkan. Perhatikan bahwa acara ini tidak't api jika tidak ada teks "cetak" sebagai hasil dari penekanan tombol.
http://jsfiddle.net/LZs2D/1/ Akan menunjukkan bagaimana ini bekerja.
KeyUp berperilaku demikian pula untuk KeyDown.
Hanya untuk latar belakang, "menekan tombol" event akan memberikan anda charCode properti setiap kali anda menekan tombol karakter.
Namun, "menekan tombol" acara doesn't menangkap setiap keystroke - beberapa tombol api sebelum "menekan tombol" acara.
Sebaliknya, "keydown" acara akan menangkap setiap keystroke, tapi itu doesn't memiliki charCode properti. Jadi bagaimana kita bisa tahu jika itu's karakter utama? Memeriksa setiap stroke kunci apakah keyCode ini dalam batas bawah dan atas untuk beberapa rentang isn't optimal dan efisien. Saya menduga bahwa ada juga masalah untuk karakter luar dari range ASCII.
Pendekatan saya adalah memeriksa panjang dari acara "kunci" properti. "tombol" properti adalah sebuah alternatif untuk "keyCode" untuk menentukan tombol mana yang ditekan. Untuk kontrol kunci, "kunci" properti deskriptif (misalnya "rightArrow", "F12", "kembalikan", dll.). Untuk karakter kunci, "kunci" properti untuk karakter kunci hanya karakter (e.g "a", "A", "~", "\", dll.). Oleh karena itu, untuk setiap karakter kunci, panjang "kunci" properti akan memiliki panjang 1; sedangkan karakter kontrol akan memiliki panjang lebih besar dari 1.
Artikel ini memiliki daftar
keyCodes
di `Javascript:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
Anda juga dapat menggunakan RegEx untuk ini:
aku
bendera membuat ekspresi case sensitive.Saya melihat bahwa semua karakter dengan panjang 1 ('A','B',nomor,simbol) dapat dicetak jadi saya hanya menggunakan. Saya menggunakan solusi ini untuk karakter non-inggris juga: