0

我有一个作为按钮操作的 div。单击按钮后,我希望它模拟按键。在 Stackoverflow 的其他地方,人们建议使用jQuery.Event("keydown");,但建议都使用.trigger()绑定到按钮而不是.click. 所以,我的示例代码如下所示:

var press = jQuery.Event("keydown");
press.which = 69; // # The 'e' key code value
press.keyCode = 69;

$('#btn').click( function() {
    $('#testInput').focus();
    $(this).trigger(press);
    console.info(press);
});

我在 JSFiddle 设置了一个虚拟示例:http: //jsfiddle.net/ruzel/WsAbS/

最终,我不想让按键填充表单元素,我只想将事件注册为文档的按键,以便 MelonJS 游戏可以拥有它。

更新:出于安全原因,浏览器可能会忽略使用键盘以外的任何东西触发按键。为了更新文本输入,这个非常好的 Jquery 插件可以解决问题:http: //bililite.com/blog/2011/01/23/improved-sendkeys/

至于任何来这里寻找 MelonJS 案例解决方案的人,最好使用 MelonJS 的 me.input 对象,如下所示:

$('#btn').mousedown(function() {
    me.input.triggerKeyEvent(me.input.KEY.E, true);
});

$('#btn').mouseup(function() {
    me.input.triggerKeyEvent(me.input.KEY.E, false);
});
4

2 回答 2

1

如果你想要一个虚拟键盘(如标题所示),你可以使用这个

于 2013-03-25T20:50:56.433 回答
1

我不知道为什么,但即使这正确触发了事件,它也不会用字符填充输入。

我已经修改了代码以表明当我们说文档确实在接收按键事件时$(document).trigger(p)

试试看:http: //jsfiddle.net/WsAbS/3/

var press = jQuery.Event("keydown");
press.which = 69; // # Some key code value
press.keyCode = 69;
press.target = $('#testInput');


$(document).on('keydown', function(event) {
    alert(event.keyCode);
});

$('#btn').click( function() {
    $(document).trigger(press);
});

我相信这对于您的 MelonJS 游戏拾取按键的最终目标应该足够了。

于 2013-03-25T20:52:16.450 回答