2015-09-26 111 views
1

我想用jQuery模拟按键。使用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 })); 

    } 

}); 

我到底做错了什么?

+0

你试过在页面加载事件代码? –

+0

我正在做keydown事件。 – aarivex

+0

是的,哪里有'keydown'事件被声明?在页面加载或domready? –

回答

2

你可以试试这个:

您可以创建一个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的网站上说,这和键被归他们是非常严重错误的。对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

+0

谢谢,它的工作。问题是我触发了错误的元素! – aarivex

0

这里是一个test它的工作原理

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

也不能工作:( – aarivex