【发布时间】:2013-03-15 11:48:44
【问题描述】:
我有一个作为按钮操作的 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);
});
【问题讨论】:
-
那么你的问题是什么?如果您想在
document上触发它,只需使用它而不是this。$(document).trigger(press); -
我不确定 MelonJS 需要什么,但我认为您正在寻找
$('#testInput').trigger(press);而不是$(this).trigger(press);。这实际上不会在文本框中插入任何文本,但它会模拟在该文本框中按下的 69 键码。它会自动冒泡到document(.trigger的本质)-jsfiddle.net/WsAbS/5 -
谢谢,伊恩。是的,就像我在上面的更新中所说的那样,您似乎无法将按键发送到并非来自实际键盘的输入,因为安全原因。至于 MelonJS,我也在上面的更新中解决了这个问题。
标签: javascript jquery input keypress melonjs