虚拟键盘与Jquery

Virtual Keyboard with Jquery

本文关键字:Jquery 键盘 虚拟      更新时间:2023-09-26

我有一个作为按钮操作的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。输入对象,如下所示:

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

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

我已经修改了代码,以显示当我们说$(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游戏拾取按键

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