【问题标题】:Simulate keypress using jQuery使用 jQuery 模拟按键
【发布时间】:2015-09-26 11:27:32
【问题描述】:

我想用 jQuery 模拟按键。

我已经试过了:

$("#canvas").trigger( jQuery.Event( 'keypress', { keyCode: 87, which: 87 }) );

但是什么都没有发生。

完整代码:

$(document).on('keydown', function(e) {

    if(e.keyCode == 49) {

        $("#canvas").trigger( jQuery.Event( 'keypress', { keyCode: 87, which: 87 }) );

    }

});

我做错了什么?

【问题讨论】:

  • 你在页面加载事件中试过这个代码吗?
  • 我正在使用 keydown 事件。
  • 是的,keydown 事件是在哪里声明的?在页面加载中还是准备就绪?

标签: jquery html keypress


【解决方案1】:

你可以试试这个:

您可以创建一个Event object

$('#canvas').trigger(jQuery.Event('keypress', {keyCode: 87, which: 13}));

您可能必须尝试设置哪个参数,例如keyCode.

或

真正的答案必须包括keyCode:

var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);

尽管 jQuery 的网站说 which 和 keyCode 是标准化的,但它们是非常严重的错误。对 e.which 和 e.keyCode 进行标准的跨浏览器检查总是最安全的,在这种情况下,只需定义两者即可。

或

jQuery 有一个 .keypress 方法,不接受模拟按键的参数。

$("#canvas").keypress();

将触发#canvas上的按键

如果您还想选择按下哪个键,您可以使用.trigger。这个例子来自Docs.

var e = $.Event("keydown", { keyCode: 87}); //"keydown" if that's what you're doing
$("body").trigger(e);

关键码87是javascript中的Key code backspace

让我知道这对你有什么作用:)

我的演示页面:

DEMO 1

DEMO 2

【讨论】:

  • 谢谢,它成功了。问题是我触发了错误的元素!
【解决方案2】:

这是一个test 它可以工作

var e = $.Event('keypress');
e.which = 87;
$('#canvas').trigger(e);

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 2010-11-30
    • 1970-01-01
    • 2012-03-02
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多