如何在 IE8 中生成具有特定键码的 keyup 事件?

发布于 2024-12-06 06:47:28 字数 413 浏览 0 评论 0原文

我需要使用本机 DOM 函数(无 jQuery)在 IE 8 中生成 keyup 事件。以下代码生成、触发并接收事件,但 keyCode 始终为 0。如何正确传递 keyCode?

<form><input id="me" type="submit" /></form>

<script type="text/javascript">
var me = document.getElementById("me");
me.attachEvent("onkeyup", function(e) {
  alert(e.keyCode); // => 0
});

document.getElementById("me").fireEvent('onkeyup', 13);
</script>

I need to generate keyup events in IE 8 using native DOM functions (no jQuery). The following code generates, fires, and receives the event, but the keyCode is always 0. How do I properly pass the keyCode?

<form><input id="me" type="submit" /></form>

<script type="text/javascript">
var me = document.getElementById("me");
me.attachEvent("onkeyup", function(e) {
  alert(e.keyCode); // => 0
});

document.getElementById("me").fireEvent('onkeyup', 13);
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抽个烟儿 2024-12-13 06:47:28

想通了。解决方案是创建一个事件对象,分配键码,然后从节点触发它。

var e = document.createEventObject("KeyboardEvent");
e.keyCode = keyCode;

node.fireEvent("onkeyup", e);

Figured it out. The solution is to create an event object, assign the keycode, and fire it from the node.

var e = document.createEventObject("KeyboardEvent");
e.keyCode = keyCode;

node.fireEvent("onkeyup", e);
荒人说梦 2024-12-13 06:47:28
e = e || window.event;
keycode = e.keyCode || e.which;

这将使事件在所有浏览器中工作。
另外,我更喜欢使用 me.onkeyup = function(e) { ... },但这只是个人喜好(我知道这种方法的缺点,但我有聪明的方法来解决他们)

e = e || window.event;
keycode = e.keyCode || e.which;

That will make events work in all browsers.
Also, I prefer to use me.onkeyup = function(e) { ... }, but that' just personal preference (I know the drawbacks of this method, but I have clever ways to work around them)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文