Saya menemukan bahwa acara perubahan jQuery di kotak teks tidak menyala sampai saya mengklik di luar kotak teks.
HTML:
<input type="text" id="textbox" />
JS:
$("#textbox").change(function() {alert("Change detected!");});
Lihat demo di JSFiddle
Aplikasi saya mengharuskan acara yang akan dipecat pada setiap perubahan karakter di kotak teks. Saya bahkan mencoba menggunakan keyup sebagai gantinya ...
$("#textbox").keyup(function() {alert("Keyup detected!");});
... tapi ini adalah fakta yang diketahui bahwa acara keyup tidak diaktifkan pada klik kanan dan tempel.
Ada solusi? Apakah kedua pendengar akan menyebabkan masalah?
Jawaban:
Mengikat kedua peristiwa adalah cara khas untuk melakukannya. Anda juga dapat mengikat ke acara tempel.
Anda dapat mengikat ke beberapa acara seperti ini:
Jika Anda ingin bertele-tele tentang itu, Anda juga harus mengikat mouseup untuk melayani menyeret teks, dan menambahkan
lastValue
variabel untuk memastikan bahwa teks benar-benar berubah:Dan jika Anda ingin menjadi
super duper
bertele - tele maka Anda harus menggunakan penghitung waktu interval untuk memenuhi pengisian otomatis, plugin, dll:sumber
.on('change keyup paste', function() {...}
sebenarnya kebakaran beberapa kali! Jika saya mengetik karakter, dan kemudian mengklik di luar, acara 'perubahan' dan 'keyup' keduanya dipecat, yang mengarah ke fungsi yang dieksekusi beberapa kali! Jika saya klik kanan lalu tempel lalu klik di luar, 'ubah' dan 'tempel' sama-sama diaktifkan. Heck! Saat menggunakan Ctrl + V untuk menempel dan kemudian mengklik di luar api itu tiga kali !!lastValue
variabel untuk memastikan itu benar-benar telah berubah.Pada browser modern, Anda dapat menggunakan yang
input
acara :DEMO
sumber
Ini berfungsi untuk mengetik, menempel, klik kanan mouse paste dll.
sumber
HTML:
JS:
sumber
Coba ini:
Lihat demo di JSFiddle .
sumber
bind()
?keyup
danchange()
memiliki perilaku khas mereka sehingga id dia ingin mengeksekusi acara kemudianpaste
mungkin menjadi pilihanbind
bukanon
.Coba Kode di bawah ini:
sumber
event to be fired on every character change in the textbox
"...but it's a known fact that the keyup event isn't fired on right-click-and-paste."
Membaca komentar Anda membawa saya ke perbaikan kotor. Ini bukan cara yang benar, saya tahu, tetapi bisa menjadi solusi.
sumber