Apakah ada peristiwa di Jquery yang dipicu hanya jika pengguna menekan tombol enter di kotak teks? Atau plugin apa pun yang dapat ditambahkan untuk menyertakan ini? Jika tidak, bagaimana cara saya menulis plugin cepat yang akan melakukan ini?
javascript
jquery
jquery-events
Klik Upvote
sumber
sumber
e.keyCode
untuk beberapa tombol, lebih baik digunakane.which
, ini akan menjamin bahwa Anda akan menangani tombol yang sama pada setiap browsersumber
Ini adalah plugin untuk Anda: (Fiddle: http://jsfiddle.net/maniator/CjrJ7/ )
sumber
$
variabel untuk plugin itu bukan ide yang baik karena dapat menyebabkan konflik.$("#myInput").bind('click, onEnter', myCallback);
dan itu akan bekerja tanpa memerlukan yang lain?inilah plugin jquery untuk melakukan itu
untuk menggunakannya, masukkan kode dan atur seperti ini:
jsfiddle di sini http://jsfiddle.net/VrwgP/30/
sumber
func.apply(this)
, dengan cara itu di dalam fungsi callback Anda dapat menggunakanthis
seperti biasa untuk mengakses elemen di mana peristiwa itu dipicu.e.preventDefault(); e.stopPropagation();
di dalamif (e.keyCode)
bit.Harus dicatat bahwa penggunaan
live()
dalam jQuery telah ditinggalkan sejak versi1.7
dan telah dihapus dalam jQuery1.9
. Sebagai gantinya, penggunaanon()
disarankan.Saya akan sangat menyarankan metodologi berikut untuk mengikat, karena memecahkan tantangan potensial berikut:
document.body
dan melewati $ selector sebagai argumen keduaon()
, elemen dapat dilampirkan, dilepaskan, ditambahkan atau dihapus dari DOM tanpa perlu berurusan dengan peristiwa mengikat kembali atau mengikat ganda. Ini karena acara dilampirkandocument.body
daripada$selector
langsung, yang berarti$selector
dapat ditambahkan, dihapus dan ditambahkan lagi dan tidak akan pernah memuat acara yang terikat padanya.off()
sebelumnyaon()
, skrip ini dapat hidup di dalam bagian utama halaman, atau di dalam tubuh panggilan AJAX, tanpa harus khawatir tentang peristiwa yang tidak sengaja mengikat ganda.$(function() {...})
, skrip ini dapat kembali dimuat oleh badan utama laman, atau di dalam badan panggilan AJAX.$(document).ready()
tidak dipecat karena permintaan AJAX, sementara$(function() {...})
demikian.Berikut ini sebuah contoh:
sumber
Jika input
search
Anda, Anda juga dapat menggunakanon 'search'
acara. Contoh.
sumber
Kode HTML: -
Kode Java Script
Formulir Anda tidak memiliki Tombol Kirim Default
sumber
Variasi halus lainnya. Saya melakukan sedikit pemisahan kekuatan, jadi saya memiliki plugin untuk mengaktifkan menangkap tombol enter, lalu saya hanya mengikat acara secara normal:
Dan kemudian digunakan:
Variasi ini memungkinkan Anda menggunakan delegasi acara (untuk mengikat elemen yang belum Anda buat).
sumber
Saya tidak
keypress
dapat mengaktifkan acara untuk tombol enter, dan menggaruk kepala saya selama beberapa waktu, sampai saya membaca dokumen jQuery:" Acara penekanan tombol dikirim ke elemen ketika browser mendaftar input keyboard. Ini mirip dengan acara keydown, kecuali bahwa pengubah dan kunci non-pencetakan seperti Shift, Esc, dan menghapus peristiwa pemicu keydown tetapi bukan peristiwa penekanan tombol. " ( https://api.jquery.com/keypress/ )
Saya harus menggunakan acara
keyup
ataukeydown
untuk menangkap penekanan tombol enter.sumber