我正在尝试在茉莉花中进行测试,并且需要使用指定的键码触发keyup事件(以我的情况为输入)。当我尝试这个
document.getElementById('title').addEventListener('keyup', function(e){
console.log(e.keyCode);
});
var e = $.Event("keyup", {keyCode: 64});
$('title').trigger(e);
事件没有被触发,尽管当我手动设置焦点并按下它时被触发
但是当我尝试这个
$('title').on('keyup', function(e){
e.currentTarget.style.color = 'red';
console.log(e.keyCode);
});
var e = $.Event("keyup", {keyCode: 64});
$('title').trigger(e);
它正在被触发。我不明白为什么一个不起作用而另一个是不起作用
答案 0 :(得分:1)
如果您使用addEventListener而不使用触发器,请使用dispatchEvent:
document.getElementById("q").dispatchEvent(new KeyboardEvent('keyup', { 'keyCode': 65 }));
答案 1 :(得分:0)
.trigger()仅在使用jquery附加事件处理程序时有效。它不适用于本机事件侦听器。
在第二种情况下,您将附加$(..)。on,因此jquery将触发该事件。 本机事件侦听器在这里不起作用。您可以使用dispatchEvent
var event = new KeyboardEvent("keyup", {keyCode: 64});
document.getElementById('title').addEventListener('keyup', function(e){
console.log(e.keyCode);
});
document.getElementById('title').dispatchEvent(event);
在此处查看更多信息 https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events