如何触发具有指定键码的事件,例如keyup

时间:2019-05-20 14:00:00

标签: javascript jquery html

我正在尝试在茉莉花中进行测试,并且需要使用指定的键码触发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);

它正在被触发。我不明白为什么一个不起作用而另一个是不起作用

2 个答案:

答案 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