Saya mencoba memicu change
acara pada kotak teks ketika saya mengubah nilainya dengan tombol, tetapi tidak berhasil. Periksa biola ini .
Jika Anda mengetik sesuatu di kotak teks dan mengklik di tempat lain, change
dipicu. Namun, jika Anda mengklik tombol, nilai kotak teks berubah, tetapi change
tidak memicu. Mengapa?
Jawaban:
onchange
hanya menyala saat pengguna mengetik ke input dan kemudian input kehilangan fokus.Anda dapat memanggil
onchange
acara secara manual menggunakan setelah menetapkan nilainya:Atau, Anda dapat memicu acara menggunakan:
sumber
.change()
ke.val()
metode..val()
di.change()
karena mereka melakukan validasi input. Memicu.change()
aktif.val()
akan menyebabkan loop tak terbatas.blur
mencapai sesuatu yang serupa:$('#mytext').focus().val('New text').blur();
Dari saran redsquare yang sangat bagus, ini bekerja dengan baik:
sumber
this
:return this.val(v).trigger("change");
Anda dapat dengan mudah mengganti
val
fungsi untuk memicu perubahan dengan menggantinya dengan proksi keval
fungsi asli .cukup tambahkan kode ini di suatu tempat di dokumen Anda (setelah memuat jQuery)
Contoh kerja: di sini
(Perhatikan bahwa ini akan selalu memicu
change
ketikaval(new_val)
dipanggil bahkan jika nilainya tidak benar-benar berubah.)Jika Anda ingin memicu perubahan SAJA ketika nilainya benar-benar berubah, gunakan yang ini:
Contoh langsung untuk itu: http://jsfiddle.net/5fSmx/1/
sumber
.val()
..val()
dalam pikiran tiba-tiba akan mulai menghasilkan efek samping :-p.Anda perlu mengaitkan metode seperti ini:
sumber
Tidak, Anda mungkin perlu memicunya secara manual setelah menetapkan nilai:
atau:
sumber
Sepertinya acara tidak menggelegak. Coba ini:
Saya harap ini membantu.
Saya mencoba hanya tua biasa
$("#mytext").trigger('change')
tanpa menyimpan nilai lama, dan.change
api bahkan jika nilainya tidak berubah. Itu sebabnya saya menyimpan nilai sebelumnya dan dipanggil$("#mytext").trigger('change')
hanya jika itu berubah.sumber
Pada Februari 2019
.addEventListener()
saat ini tidak berfungsi dengan jQuery.trigger()
atau.change()
, Anda dapat mengujinya di bawah ini menggunakan Chrome atau Firefox.Anda harus menggunakan
.dispatchEvent()
gantinya.sumber
Dari https://api.jquery.com/change/ :
The
change
event dikirim ke elemen ketika nilainya berubah. Acara ini terbatas pada<input>
elemen,<textarea>
kotak , dan<select>
elemen. Untuk kotak pilih, kotak centang, dan tombol radio, acara tersebut dipecat segera ketika pengguna membuat pilihan dengan mouse, tetapi untuk jenis elemen lainnya acara ditunda sampai elemen kehilangan fokus.sumber
Saya tahu ini adalah utas lama, tetapi bagi yang lain mencari, solusi di atas mungkin tidak sebagus yang berikut ini, daripada memeriksa
change
acara, periksainput
acara.sumber