在JS / jQuery中触发一个keypress / keydown / keyup事件?
模拟用户在JS和/或jQuery的文本input框中input文本的最佳方法是什么?
我不想实际上把文本放在input框中,我只是想触发所有的事件处理程序 ,通常会由用户在input框中键入信息触发。 这意味着焦点,keydown,按键,键盘和模糊。 我认为。
那么如何做到这一点呢?
您可以通过直接呼叫来触发任何事件,如下所示:
$(function() { $('item').keydown(); $('item').keypress(); $('item').keyup(); $('item').blur(); });
这是否做你想做的事情?
你应该也可以触发.focus()
和潜在的.change()
如果你想用特定的键来触发键盘事件,你可以这样做:
$(function() { var e = $.Event('keypress'); e.which = 65; // Character 'A' $('item').trigger(e); });
这里有一些关于按键事件的有趣的讨论: jQuery Event Keypress:哪个键被按下了? ,特别是关于跨浏览器与.which属性的兼容性。
要触发一个input按键,我不得不修改@ebynum响应,特别是使用keyCode属性。
e = $.Event('keyup'); e.keyCode= 13; // enter $('input').trigger(e);
这是一个香草js例子来触发任何事件:
function triggerEvent(el, type){ if ('createEvent' in document) { // modern browsers, IE9+ var e = document.createEvent('HTMLEvents'); e.initEvent(type, false, true); el.dispatchEvent(e); } else { // IE 8 var e = document.createEventObject(); e.eventType = type; el.fireEvent('on'+e.eventType, e); } }
你现在可以做到:
var e = $.Event("keydown", {keyCode: 64});
你可以派遣像
el.dispatchEvent(new Event('focus')); el.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));
首先,我需要说的是Sionnach733的样品完美无瑕。 有些用户抱怨没有实际的例子。 这是我的两分钱。 使用此站点时,我一直在进行鼠标点击模拟: https : //www.youtube.com/tv 。 您可以打开任何video,并尝试运行此代码。 它执行切换到下一个video。
function triggerEvent(el, type, keyCode) { if ('createEvent' in document) { // modern browsers, IE9+ var e = document.createEvent('HTMLEvents'); e.keyCode = keyCode; e.initEvent(type, false, true); el.dispatchEvent(e); } else { // IE 8 var e = document.createEventObject(); e.keyCode = keyCode; e.eventType = type; el.fireEvent('on'+e.eventType, e); } } var nextButton = document.getElementsByClassName('icon-player-next')[0]; triggerEvent(nextButton, 'keyup', 13); // simulate mouse/enter key press