使用Jquery的虚拟键盘

时间:2013-03-25 20:36:02

标签: javascript jquery input keypress melonjs

我有一个按钮操作的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);
});

2 个答案:

答案 0 :(得分:1)

如果您需要虚拟键盘(如标题所示),您可以使用this一个。

答案 1 :(得分: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游戏获得按键的最终目标。