Apa cara terbaik untuk mensimulasikan pengguna memasukkan teks dalam kotak input teks di JS dan / atau jQuery?
Saya tidak ingin benar-benar memasukkan teks ke dalam kotak input, saya hanya ingin memicu semua penangan acara yang biasanya dipicu oleh pengguna mengetik info ke dalam kotak input. Ini berarti fokus, keydown, penekanan tombol, keyup, dan blur. Kupikir.
Jadi bagaimana seseorang mencapai ini?
sumber
$('item').trigger('keypress', {which: 'A'.charCodeAt(0)});
ctrlKey: true
, juga:shiftKey
,altKey
Anda dapat mengirim acara seperti
sumber
el.dispatchEvent(new Event('keypress', {keyCode: 'a'}))
Ctrl
:el.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 70, ctrlKey: true }));
(Ini akan menyebabkan jalan pintasCtrl + F
)Untuk memicu enterpenekanan tombol, saya harus memodifikasi respons @ebynum, khususnya, menggunakan properti keyCode.
sumber
keydown
Peristiwa tidak tertangkap, atau saya melakukan sesuatu yang salah di sini? fiddle.jshell.net/Palestinian/8d8J9Berikut ini adalah contoh vanilla untuk memicu peristiwa apa pun:
sumber
Anda dapat mencapai ini dengan:
EventTarget.dispatchEvent(event)
dan dengan mengirimkan KeyboardEvent baru sebagai acara.Sebagai contoh:
element.dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}))
Contoh kerja:
MDN dispatchEvent
Keyboard MDN
sumber
Anda sekarang dapat melakukan:
sumber
Pertama-tama, saya perlu mengatakan bahwa sampel dari Sionnach733 bekerja dengan sempurna. Beberapa pengguna mengeluh tentang tidak adanya contoh nyata. Ini dua sen saya. Saya telah mengerjakan simulasi klik mouse saat menggunakan situs ini: https://www.youtube.com/tv . Anda dapat membuka video apa saja dan mencoba menjalankan kode ini. Itu melakukan beralih ke video berikutnya.
sumber
Saya pikir saya akan menarik perhatian Anda bahwa dalam konteks spesifik di mana pendengar didefinisikan dalam plugin jQuery, maka satu-satunya hal yang berhasil mensimulasikan peristiwa penekanan tombol untuk saya, yang akhirnya ditangkap oleh pendengar itu, adalah menggunakan setTimeout (). misalnya
Setiap penggunaan
$("#txtName").keypress()
itu diabaikan , meskipun ditempatkan di akhir.ready() function
. Lagipula tidak ada suplemen DOM tertentu yang dibuat secara sinkron.sumber
Untuk naskah ketik dilemparkan ke KeyboardEventInit dan berikan integer keyCode yang benar
sumber