javascript中的onkeyup事件无效?

时间:2013-07-03 11:30:10

标签: javascript jquery javascript-events keyboard-events

的所有人。 我使用像onkeyup和onkeydown函数这样的事件。在那我试图使用javascript单独禁用printscr。我用Google搜索,其中ASCII键为18,Printscr为44。

这是我试图禁用的代码。

document.onkeyup = function(e)
            {
                if (e.which === 44)
                {
                    alert('alt key pressed');
                    return false;
                }

            };
var isAlt = false;
document.onkeydown = function(e)
            {
                if (e.which === 18) {
                    isAlt === true;
                    if (((e.which === 44)) && isAlt === true)
                    {
                        alert('tested printscreen');
                        return false;
                    }
                }
            };

在该keyup警报正在工作,但返回false未触发。另外对于alt + printscr也没有得到警报。我该怎么办我犯了什么错误。

谢谢, 维基

1 个答案:

答案 0 :(得分:1)

查看用于停止事件的浏览器特定文档:

e.stopPropagation()

此外,在键盘中,文本框可能已经填充了重复键的多个字符。在按键时,您需要存储该值。在密钥中,如果您获得44密钥,则恢复该值。而且,您需要将键处理程序放在窗口上,而不是文档。

(function() {

var savedValue;

window.onkeyup = function(e) {
    if (e.altKey && e.which === 44) {
        alert('alt key pressed');

        if (undefined !== savedValue) {
            e.target.value = savedValue;
            savedValue = undefined;
        }
        return;
    }
};

window.onkeydown = function(e) {
    if (undefined === savedValue) {
        savedValue = e.target.value;
    }

    if (e.altKey && e.which === 44) {
        alert("tested printscr");
    }
};

})();