Saya menggunakan keypress
pendengar misalnya ..
addEventListener("keypress", function(event){
}
Namun, ini sepertinya tidak mendeteksi backspace yang menghapus teks ...
Apakah ada pendengar berbeda yang bisa saya gunakan untuk mendeteksi ini?
javascript
keypress
addeventlistener
Skizit
sumber
sumber
keypress
acara di banyak browser. Lihat unixpapa.com/js/key.htmlCoba
keydown
alih-alihkeypress
.Peristiwa Keyboard terjadi dalam urutan ini:
keydown
,keyup
,keypress
Masalah dengan backspace mungkin adalah, bahwa browser akan menavigasi kembali
keyup
dan dengan demikian halaman Anda tidak akan melihatkeypress
acara tersebut.sumber
keydown
keypress
keyup
. unixpapa.com/js/testkey.htmlkeyup
acara dipecat.keydown
peristiwa tetapi karakter tidak dihapus dari input sampai beberapa saat setelah itu.The
keypress
acara mungkin berbeda di seluruh browser.Saya membuat Jsfiddle untuk membandingkan acara keyboard (menggunakan pintasan JQuery) di Chrome dan Firefox. Bergantung pada browser yang Anda gunakan untuk suatu
keypress
acara akan dipicu atau tidak - backspace akan memicukeydown/keypress/keyup
pada Firefox tetapi hanyakeydown/keyup
di Chrome.Peristiwa keycick tunggal dipicu
di Chrome
keydown/keypress/keyup
saat browser mendaftarkan input keyboard (keypress
diaktifkan)keydown/keyup
jika tidak ada input keyboard (diuji dengan alt, shift, backspace, tombol panah)keydown
hanya untuk tab?di Firefox
keydown/keypress/keyup
ketika browser mendaftarkan input keyboard tetapi juga untuk backspace, tombol panah, tab (jadi di sinikeypress
dipecat bahkan tanpa input)keydown/keyup
untuk alt, bergeserIni seharusnya tidak mengejutkan karena menurut https://api.jquery.com/keypress/ :
Penggunaan tipe acara penekanan tombol sudah ditinggalkan oleh W3C ( http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress )
Terakhir, untuk menjawab pertanyaan Anda, Anda harus menggunakan
keyup
ataukeydown
mendeteksi backspace di seluruh Firefox dan Chrome.Cobalah di sini:
sumber
Sesuatu yang saya tulis memetikan siapa pun menemukan masalah dengan orang-orang memukul backspace sambil berpikir mereka berada di bidang formulir
sumber
Kontrol numerik saya:
Cobalah
Kode kunci BackSpace adalah 8
sumber
event.key === "Backspace"
Lebih baru dan lebih bersih: gunakan
event.key
. Tidak ada lagi kode angka yang berubah-ubah!Mozilla Docs
Browser yang Didukung
sumber
.key
saat ini merupakan opsi yang direkomendasikan oleh dokumen. Selain itu, mendukung berbagai keyboard internasional dengan pemetaan yang berbeda untuk setiap kunci yang diberikan. Mereka tidak sewenang - wenang dalam arti bahwa mereka diperbaiki, tetapi mereka ketika membaca kodeGunakan salah satu dari kejadian keyup / keydown / beforeinput sebagai gantinya.
berdasarkan referensi ini , penekanan tombol sudah usang dan tidak lagi direkomendasikan.
jika Anda menggunakan "sebelum masukan" hati-hati tentang kompatibilitas Browser . perbedaan antara "beforeinput" dan dua lainnya adalah bahwa "beforeinput" dipecat ketika nilai input hendak diubah, jadi dengan karakter yang tidak dapat mengubah nilai input, itu tidak dipecat (misalnya shift, ctr, alt).
Saya memiliki masalah yang sama dan dengan menggunakan keyup itu diselesaikan.
sumber