Saya bertanya-tanya apa yang saya lakukan salah:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
Saya ingin doSearch()
fungsi saya juga dipecat ketika saya menekan Backspacetombol. Saat ini sama sekali tidak ada yang terjadi ketika saya menekan BackspaceChrome dan Safari.
ada ide?
Jawaban:
Gunakan
keyup
sebagai gantikeypress
. Ini mendapatkan semua kode kunci ketika pengguna menekan sesuatusumber
keyup
memecat Backspace padahalkeypress
tidak?keypress
untukEnter
kunci,keydown
untukBackspace
dan sebagainya; jika tidak, Anda akan menemukan acara Anda di beberapa browser tidak benar-benar berfungsi seperti yang Anda harapkan, terutama ketika Anda ingin mencegah perilaku default untuk kunci tersebut. Ketika Anda menggunakan yang salah, apa yang akan terjadi adalah acara Anda tidak ditangkap sama sekali (seperti halnya untuk Backspace) atau Anda tidak dapat mencegahnya; karena sudah terjadi sebelum kode penanganan acara Anda sampai ke sana.keyup
akan merusak tombol angka . Apakah Anda mengetahui jawaban yang memungkinkan mendeteksi dengan benar tombol apa saja pada keyboard lengkap?keydown
adalah pilihan yang lebih baik untuk semua kunciSaya menemukan ini sendiri. Saya menggunakan
.on
sehingga terlihat sedikit berbeda tetapi saya melakukan ini:Menambahkan Pekerjaan Saya di Sekitar sini. Saya perlu menghapus ssn yang diketik oleh pengguna jadi saya melakukan ini di jQuery
sumber
Jika Anda ingin memadamkan acara hanya pada perubahan penggunaan input Anda:
sumber
input
juga tidak memperhatikan kode kunci. Ini juga tidak akan berhasil.Menurut dokumentasi jQuery untuk .keypress (), itu tidak menangkap karakter yang tidak dapat dicetak, jadi backspace tidak akan bekerja pada penekanan tombol, tetapi terperangkap dalam keydown dan keyup:
Dalam beberapa kasus keyup tidak diinginkan atau memiliki efek yang tidak diinginkan lainnya dan keydown cukup, jadi salah satu cara untuk menangani ini adalah dengan menggunakan
keydown
untuk menangkap semua penekanan tombol kemudian mengatur batas waktu interval pendek sehingga kunci dimasukkan, kemudian melakukan pemrosesan dalam setelah itu.sumber