【发布时间】:2012-01-20 14:13:06
【问题描述】:
我正在尝试在调度的事件对象上设置 keyCode。
单击按钮时,文本框控件上会引发事件以模拟 keydown 事件。事件已成功引发,但 keyCode 为 0。我需要将具有正确 keyCode 的事件对象发送到文本框。 我一直在使用来自here 的代码。
如何在dispatch事件中设置keyCode值?
<html>
<head>
</head>
<body>
<input type="button" id="btn" value="Click"></input>
<input type="text" id="txt"></input>
<script>
document.getElementById('btn').addEventListener("click", btnClick);
document.getElementById('txt').addEventListener("keydown", txtKeydown);
function btnClick(e) {
var txt = document.getElementById('txt');
var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) {
var e = document.createEvent("KeyboardEvents");
e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1));
e.keyCode = 83;
e.charCode = 0;
target.dispatchEvent(e);
};
var canceled = !dispatchKeyboardEvent(txt,
'keydown', true, true, // type, bubbles, cancelable
window, // window
's', // key
0, // location: 0=standard, 1=left, 2=right, 3=numpad, 4=mobile, 5=joystick
false, false, false); // Ctr, Alt, Shift
}
function txtKeydown(e) {
console.dir(e);
console.log(e.keyCode);
}
</script>
</body>
</html>
【问题讨论】:
-
有一个非常聪明的解决方法,请参阅:stackoverflow.com/questions/10455626/… 这将允许您设置所需的属性,并发送一个 keyup/down 事件。包含示例代码。
标签: javascript google-chrome keyboard-events keydown