Saya memiliki fungsi berikut:
$(document).ready(function() {
$("#dSuggest").keypress(function() {
var dInput = $('input:text[name=dSuggest]').val();
console.log(dInput);
$(".dDimension:contains('" + dInput + "')").css("display","block");
});
});
Untuk beberapa alasan, untuk penekanan tombol pertama, saya mendapatkan string kosong ke log konsol.
jquery
jquery-events
Atau Weinberger
sumber
sumber
input
jenis acara.Menyadari bahwa ini adalah posting yang agak lama, saya tetap akan memberikan jawaban karena saya masih berjuang dengan masalah yang sama.
Anda harus menggunakan
"input"
acara sebagai gantinya, dan mendaftar dengan.on
metode ini. Ini cepat - tanpa lagkeyup
dan menyelesaikan masalah penekanan tombol terbaru yang Anda uraikan.Demo di sini
sumber
Gunakan
.keyup
bukan penekanan tombol.Juga gunakan
$(this).val()
atau hanyathis.value
untuk mengakses nilai input saat ini.DEMO di sini
Info tentang
.keypress
dari jQuery docs,sumber
keyup
terlalu lambat, dan kunci dapat ditekan dan ditahan tanpa dilepaskan dan hal-hal harus terjadi. lebih baik digunakankeydown
dengan sedikit batas waktu sehingga nilainya benar-benar berubah.Anda harus menghentikan utas eksekusi untuk memungkinkan input diperbarui.
sumber
keyup
keterlambatan terlalu lambat untuk beberapa tujuan, dan juga tidak kunci filter auto-filter modifier. Ini sebenarnya bekerja lebih baik untuk saya.Ini karena
Keypress
acara dipecat sebelum karakter baru ditambahkan. Gunakan acara 'keyup' sebagai gantinya, yang akan bekerja dengan sempurna dalam situasi Anda.Saya ingin menambahkan ini, jika Anda memiliki banyak kotak teks dan Anda harus melakukan hal yang sama pada acara keyup Anda, Anda bisa memberi mereka kelas css umum (misalnya commoncss) dan menerapkan event keyup seperti ini.
ini akan sangat mengurangi kode Anda karena Anda tidak harus menerapkan acara keyup oleh id untuk setiap kotak teks.
sumber
Saya sedang mencari contoh ES6 (sehingga bisa melewati linter saya) Jadi untuk orang lain yang mencari yang sama:
Saya juga akan menggunakan keyup karena Anda mendapatkan nilai saat ini yang diisi.
sumber
Cukup gunakan batas waktu untuk melakukan panggilan Anda; batas waktu akan dipanggil ketika tumpukan acara selesai (yaitu setelah acara standar dipanggil)
sumber
Saya pikir yang Anda butuhkan adalah prototipe di bawah ini
sumber
jQuery mendapatkan nilai input setelah tombol ditekan
https://www.tutsmake.com/jquery-keypress-event-detect-enter-key-pressed/
sumber