Apakah ada cara untuk memiliki keyup
, keypress
, blur
, dan change
peristiwa memanggil fungsi yang sama dalam satu baris atau yang harus saya lakukan secara terpisah?
Masalah yang saya miliki adalah bahwa saya perlu memvalidasi beberapa data dengan pencarian db dan ingin memastikan validasi tidak dilewatkan dalam hal apa pun, apakah itu diketik atau disisipkan ke dalam kotak.
jquery
events
jquery-events
shaneburgess
sumber
sumber
.on('keyup.foo keypress.foo blur.foo change.foo', …)
atau.on('keyup keypress blur change .foo', …)
?on('click tap', e => {...})
. Pendengar mungkin terpicu dua kali, saya hanya ingin memicu sekali, bagaimana saya bisa kode dalam fungsi pendengar?$('#element:not(.busy)').on('keyup keypress blur change', function(e){…});
akhirnya menghapus className 'sibuk'.Pada jQuery 1.7,
.on()
metode ini adalah metode yang disukai untuk melampirkan penangan acara ke dokumen. Untuk versi sebelumnya,.bind()
metode ini digunakan untuk melampirkan pengendali acara langsung ke elemen.sumber
Saya sedang mencari cara untuk mendapatkan jenis acara ketika jQuery mendengarkan beberapa acara sekaligus, dan Google menempatkan saya di sini.
Jadi, bagi mereka yang tertarik,
event.type
adalah jawaban saya:Info lebih lanjut di dokumen jQuery .
sumber
Anda dapat menggunakan metode bind untuk melampirkan fungsi ke beberapa acara. Cukup berikan nama acara dan fungsi penangan seperti dalam kode ini:
Pilihan lain adalah menggunakan dukungan chaining api jquery.
sumber
Jika Anda melampirkan pengendali acara yang sama ke beberapa acara, Anda sering mengalami masalah lebih dari satu dari mereka yang menembak sekaligus (misalnya tab pengguna menekan setelah mengedit; keydown, mengubah, dan blur mungkin semua api).
Kedengarannya seperti apa yang sebenarnya Anda inginkan adalah sesuatu seperti ini:
sumber
Beginilah cara saya melakukannya.
sumber
Anda bisa mendefinisikan fungsi yang ingin Anda gunakan kembali seperti di bawah ini:
Dan nantinya Anda dapat mengatur berapa banyak pendengar acara yang Anda inginkan pada objek Anda untuk memicu fungsi tersebut menggunakan on ('event') meninggalkan ruang di antaranya seperti yang ditunjukkan di bawah ini:
sumber
Jawaban oleh Tatu adalah bagaimana saya secara intuitif akan melakukannya, tetapi saya telah mengalami beberapa masalah di Internet Explorer dengan cara ini bersarang / mengikat peristiwa, meskipun itu dilakukan melalui
.on()
metode.Saya belum bisa menentukan dengan tepat versi jQuery yang mana masalahnya. Tapi kadang-kadang saya melihat masalah di versi berikut:
Solusi saya adalah pertama mendefinisikan fungsi,
dan kemudian menangani acara secara individual
Ini bukan solusi tercantik, tetapi itu bekerja untuk saya, dan saya pikir saya akan menaruhnya di sana untuk membantu orang lain yang mungkin tersandung masalah ini
sumber
Tutorial ini adalah tentang menangani beberapa acara.
sumber
Mungkin menggunakan
.on()
, yang menerima struktur berikut:,.on( events [, selector ] [, data ], handler )
sehingga Anda dapat meneruskan beberapa peristiwa ke metode ini. Dalam kasus Anda, tampilannya akan seperti ini:Dan inilah contohnya:
sumber
Sangat mudah untuk menerapkan ini dengan metode DOM bawaan tanpa pustaka besar seperti jQuery, jika Anda mau, itu hanya membutuhkan sedikit lebih banyak kode - beralihlah ke array nama acara, dan tambahkan pendengar untuk masing-masing:
sumber