<select>
memiliki API ini. Bagaimana dengan <input>
?
174
Kamu bisa memakai .change()
$('input[name=myInput]').change(function() { ... });
Namun, acara ini hanya akan menyala ketika pemilih kehilangan fokus, jadi Anda harus mengklik di tempat lain untuk memiliki pekerjaan ini.
Jika itu tidak tepat untuk Anda, Anda bisa menggunakan beberapa acara jQuery lainnya seperti keyup , keydown atau penekanan tombol - tergantung pada efek yang Anda inginkan.
change
hanya akan menyala ketika elemen input kehilangan fokus. Ada jugainput
acara yang menyala setiap kali kotak teks diperbarui tanpa perlu kehilangan fokus. Tidak seperti acara utama, ini juga berfungsi untuk menempel / menyeret teks.change
tidak didukung oleh IE9, Anda dapat menggunakanfocusout
untuk memiliki gim yang samaSeperti @pimvdb katakan dalam komentarnya,
(Lihat dokumentasi .)
Ini sangat berguna, layak untuk dijawab. Saat ini (v1.8 *?) Tidak ada .input () convenience fn di jquery, jadi cara untuk melakukannya adalah
sumber
$('form').on('change input', function);
melakukan trik untuk saya. Terima kasih.Saya akan menyarankan menggunakan acara keyup seperti di bawah ini:
Ada beberapa cara untuk mencapai hasil yang sama jadi saya kira itu tergantung pada preferensi dan tergantung pada bagaimana Anda ingin itu bekerja dengan tepat.
Pembaruan: Ini hanya berfungsi untuk input manual bukan salin dan tempel.
Untuk menyalin dan menempel, saya akan merekomendasikan yang berikut ini:
sumber
Berikut kode yang saya gunakan:
Ini bekerja cukup baik, terutama ketika dipasangkan dengan
jqGrid
kontrol. Anda cukup mengetik ke kotak teks dan segera melihat hasilnya dijqGrid
.sumber
Ada satu dan hanya satu cara yang dapat diandalkan untuk melakukan ini , dan itu adalah dengan menarik nilai dalam suatu interval dan membandingkannya dengan nilai yang di-cache.
Alasan mengapa ini adalah satu-satunya cara adalah karena ada beberapa cara untuk mengubah bidang input menggunakan berbagai input (keyboard, mouse, tempel, riwayat peramban, input suara dll.) Dan Anda tidak pernah dapat mendeteksi semuanya menggunakan peristiwa standar dalam tanda silang lingkungan -browser.
Untungnya, berkat infrastruktur acara di jQuery, cukup mudah untuk menambahkan acara inputchange Anda sendiri. Saya melakukannya di sini:
Gunakan seperti:
$('input').on('inputchange', function() { console.log(this.value) });
Ada demo di sini: http://jsfiddle.net/LGAWY/
Jika Anda takut beberapa interval, Anda dapat mengikat / membatalkan ikatan acara ini di
focus
/blur
.sumber
$('body').on('inputchange', 'input', function() { console.log(this.value) });
:? Atau tidak, seperti yang disebutkan di sini: github.com/EightMedia/hammer.js/pull/98 ?Saya sarankan menggunakan
this
kata kunci untuk mendapatkan akses ke seluruh elemen sehingga Anda dapat melakukan semua yang Anda butuhkan dengan elemen ini.sumber
Berikut ini akan berfungsi meskipun itu panggilan dinamis / Ajax.
Naskah:
Html,
Saya harap kode kerja ini akan membantu seseorang yang mencoba mengakses secara dinamis / panggilan Ajax ...
sumber
sumber
Anda cukup bekerja dengan id
sumber
Anda dapat melakukan ini dengan cara yang berbeda, keyup adalah salah satunya. Tetapi saya memberi contoh di bawah ini dengan perubahan.
NB: input [nama = "vat_id"] ganti dengan ID atau nama input Anda .
sumber
Jika Anda ingin memicu acara saat Anda mengetik , gunakan yang berikut ini:
Jika Anda ingin memicu acara saat meninggalkan bidang input , gunakan yang berikut:
sumber
$(document).on('change', 'input[name=myInput]', function() { ... });
sumber
Ini berhasil untuk saya. Jika bidang dengan bidang namaA diklik atau tombol apa pun yang dimasukkan, bidang pembaruan dengan bidang idB .
sumber
Anda bisa menggunakannya
.keypress()
.Misalnya, perhatikan HTML:
Penangan acara dapat terikat ke bidang input:
Saya sepenuhnya setuju dengan Andy; semua tergantung pada bagaimana Anda ingin itu berfungsi.
sumber