1

我希望在我的 HTML 应用程序中重现 gmail 快捷方式行为。如果按 ? ou shift+/(或 shift+,在 azerty 键盘上)一个隐藏的 div 会出现一个快捷方式列表。(如果你在一个输入中,关键事件没有被截获)。

我搜索以使用 jquery 正确拦截 keydown 以显示 div。就我而言,keydown 在我的页面的所有组件上都被拦截。

如何禁用其他 HTML 组件上的 keyevent?我试过了,e.stopPropagation();但这没有效果。

编辑: 我找到了这段代码,但在 IE7 上没有功能

        $("input, textarea").keydown(function (e) {
            e.stopPropagation();
        });


        function close_help(){
             $("#help:even").addClass("aou");
        }

        function doKeyDown(e) {
            if (e.keyCode == 188) {
                $("#help:even").removeClass("aou");
            }

        }

        var input_ = document.getElementsByTagName("input").elements;

        if ($.browser.msie && $.browser.version < 9) {
            window.attachEvent("keydown", doKeyDown, true);
        }
        else {
            window.addEventListener("keydown", doKeyDown, false);
        }
        input_.removeEventListener("keydown");
4

2 回答 2

0

你必须检查

e.target.type

查看您是否在输入或页面的其他部分。

于 2012-12-13T10:58:21.197 回答
0

要停止事件的传播,您需要检查三个功能

  1. 防止默认()
  2. 停止传播()
  3. 停止立即传播()

当您在与要处理的事件相同的 DOM 级别上有多个事件时,需要最后一个。

于 2012-12-13T11:00:53.970 回答