Saya memiliki bidang teks tersembunyi yang nilainya diperbarui melalui respons AJAX.
<input type="hidden" value="" name="userid" id="useid" />
Ketika nilai ini berubah, saya ingin memecat permintaan AJAX. Adakah yang bisa menyarankan cara mendeteksi perubahan?
Saya memiliki kode berikut, tetapi tidak tahu bagaimana mencari nilainya:
$('#userid').change( function() {
alert('Change!');
})
Jawaban:
Jadi ini sangat terlambat, tetapi saya telah menemukan jawaban, kalau-kalau ini berguna bagi siapa saja yang menemukan utas ini.
Perubahan nilai pada elemen tersembunyi tidak secara otomatis mem-flash event .change (). Jadi, di mana pun Anda menetapkan nilai itu, Anda juga harus memberi tahu jQuery untuk memicunya.
Begitu itu terjadi,
harus bekerja seperti yang diharapkan.
sumber
.trigger()
umumnya lebih baik digunakan daripada sekadar meneleponchange()
?change
acara Anda harus menambahkan kodesetUserID()
untuk memeriksa apakah nilainya benar-benar berubah atau tidak.if ($('#userid').val() != myVaule) { // set val() and trigger change }
Karena input tersembunyi tidak memicu peristiwa "perubahan" pada perubahan, saya menggunakan MutationObserver untuk memicu ini sebagai gantinya.
(Terkadang perubahan nilai input tersembunyi dilakukan oleh beberapa skrip lain yang tidak dapat Anda modifikasi)
Ini tidak berfungsi di IE10 dan di bawah
sumber
input[type=hidden]
trigger('change')
itu tidak berhasil untuk saya, jadi saya telah membuat CustomEvent, mendaftarkannya dan kemudianelement.dispatchEvent(myCustomEvent)
Anda cukup menggunakan fungsi di bawah ini, Anda juga dapat mengubah elemen tipe.
Perubahan nilai pada elemen tersembunyi tidak secara otomatis mem-flash event .change (). Jadi, di mana pun Anda menetapkan nilai itu, Anda juga harus memberi tahu jQuery untuk memicunya.
HTML
JAVASCRIPT
harus bekerja seperti yang diharapkan.
http://jsfiddle.net/7CM6k/3/
sumber
sumber
Dimungkinkan untuk menggunakan
Object.defineProperty()
untuk mendefinisikan kembali properti 'nilai' dari elemen input dan melakukan apa pun selama perubahan.Object.defineProperty()
memungkinkan kita untuk mendefinisikan pengambil dan penyetel untuk properti, dengan demikian mengendalikannya.https://jsfiddle.net/bvvmhvfk/
sumber
Contoh ini mengembalikan nilai bidang konsep setiap kali bidang konsep tersembunyi mengubah nilainya (browser chrome):
sumber
Membangun dari jawaban Viktar , berikut ini adalah implementasi yang dapat Anda panggil sekali pada elemen input tersembunyi yang diberikan untuk memastikan bahwa acara perubahan berikutnya dipecat setiap kali nilai elemen input berubah:
Sebut ini pada dokumen siap seperti:
sumber
Meskipun utas ini berusia 3 tahun, inilah solusi saya:
sumber