Dengan jQuery, bagaimana saya mengetahui tombol mana yang ditekan ketika saya mengikat keypress event?
$('#searchbox input').bind('keypress', function(e) {});
Saya ingin memicu pengiriman saat ENTERditekan.
[Memperbarui]
Meskipun saya menemukan (atau lebih baik: satu) menjawab sendiri, sepertinya ada beberapa ruang untuk variasi;)
Apakah ada perbedaan antara keyCode
dan which
- terutama jika saya hanya mencari ENTER, yang tidak akan pernah menjadi kunci unicode?
Apakah beberapa browser menyediakan satu properti dan yang lain menyediakan yang lainnya?
Jawaban:
Sebenarnya ini lebih baik:
sumber
e.which
, acara apa pun yang Anda gunakan.e.which
tidak disetel (tetap0
), tetapie.keyCode
sedang (9
). Lihat stackoverflow.com/questions/4793233/... mengapa ini penting.Coba ini
sumber
Jika Anda menggunakan jQuery UI, Anda memiliki terjemahan untuk kode kunci umum. Dalam ui / ui / ui.core.js :
Ada juga beberapa terjemahan dalam tes / simulasikan / jquery.simulate.js tapi saya tidak dapat menemukannya di perpustakaan inti JS. Pikiran Anda, saya hanya mengambil sumber. Mungkin ada beberapa cara lain untuk menghilangkan angka ajaib ini.
Anda juga dapat menggunakan String.charCodeAt dan .fromCharCode:
sumber
Uncaught TypeError: String.charCodeAt is not a function
Saya pikir Anda bermaksud mengatakan'\r'.charCodeAt(0) == 13
Karena Anda menggunakan jQuery, Anda harus benar-benar menggunakan .which. Ya, peramban yang berbeda mengatur properti yang berbeda, tetapi jQuery akan menormalkannya dan menetapkan nilai .which di setiap kasus. Lihat dokumentasi di http://api.jquery.com/keydown/ ia menyatakan:
sumber
... contoh ini mencegah pengiriman formulir (secara teratur niat dasar ketika menangkap keystroke # 13):
sumber
sunting: Ini hanya berfungsi untuk IE ...
Saya menyadari ini adalah posting lama, tetapi seseorang mungkin menganggap ini berguna.
Acara utama dipetakan, jadi alih-alih menggunakan nilai kode kunci Anda juga dapat menggunakan nilai kunci untuk membuatnya sedikit lebih mudah dibaca.
Berikut adalah lembar contekan dengan kunci yang dipetakan yang saya dapatkan dari blog ini
sumber
e.key
properti.sumber
event.which
.Periksa plugin jquery.hotkeys yang sangat baik yang mendukung kombinasi tombol:
sumber
Semoga ini bisa membantu Anda !!!
sumber
Ini adalah daftar keycode yang lengkap:
sumber
Oke, saya buta:
akan berisi kode kunci ASCII.
Lihat https://developer.mozilla.org/En/DOM/Event.which
sumber
Berikut ini adalah uraian lengkap tentang perilaku berbagai browser http://unixpapa.com/js/key.html
sumber
Saya hanya akan melengkapi kode solusi dengan baris ini
e.preventDefault();
. Dalam hal bidang input formulir kami tidak hadir untuk mengirimkan saat masuk ditekansumber
Tambahkan submit tersembunyi, bukan tipe tersembunyi, cukup kirim dengan style = "display: none". Ini adalah contoh (menghapus atribut yang tidak perlu dari kode).
itu akan menerima tombol enter asli, tidak perlu JavaScript, bekerja di setiap browser.
sumber
Ini adalah ekstensi jquery yang akan menangani tombol enter yang sedang ditekan.
Contoh kerja dapat ditemukan di sini http://jsfiddle.net/EnjB3/8/
sumber
Penyihir;)
Demo: http://jsfiddle.net/molokoloco/hgXyq/24/
sumber
Gunakan
event.key
dan JS modern!Tidak ada kode angka lagi. Anda dapat memeriksa kunci secara langsung. Sebagai contoh
"Enter"
,"LeftArrow"
,"r"
, atau"R"
.Mozilla Docs
Browser yang Didukung
sumber
Anda harus memiliki firbug untuk melihat hasilnya di konsol
sumber
Beberapa browser menggunakan keyCode, yang lain menggunakan itu. Jika Anda menggunakan jQuery, Anda dapat menggunakan jQuery sebagai standar. Sebenarnya,
sumber
Menurut jawaban Kilian:
Jika hanya memasukkan tombol-tekan itu penting:
sumber
Cara termudah yang saya lakukan adalah:
sumber
event.which
daripadaevent.keyCode
. Dari jQuery API :The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input.
Saya baru saja membuat plugin untuk jQuery yang memungkinkan
keypress
acara yang lebih mudah . Alih-alih harus menemukan nomor dan memasukkannya, yang harus Anda lakukan adalah ini:Bagaimana cara menggunakannya
Sesederhana itu. Harap dicatat bahwa
theKeyYouWantToFireAPressEventFor
itu bukan angka, tetapi string (mis."a"
Untuk menembak ketika Aditekan,"ctrl"
untuk menembak ketika ditekan, atau, dalam kasus nomor, hanya , tidak ada tanda kutip. Itu akan menyala ketika ditekan.)CTRL (control)1
1Contoh / Kode:
Tampilkan cuplikan kode
Karena versi yang panjang sangat ... yah ... lama, saya telah membuat tautan PasteBin untuk itu:
http://pastebin.com/VUaDevz1
sumber
The
event.keyCode
danevent.which
yang depracated. Lihat @Gibolt jawaban di atas atau periksa dokumentasi: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventevent.key
harus digunakan sebagai gantinyakeypress
acara juga tidak digunakan: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_eventsumber
Coba ini:
sumber