我正在制作一个需要检测是否按下了CTRL键的应用程序。

我的代码如下:

    document.addEventListener('keydown', function(event) {
    if (event.keyCode != 13 || event.keyCode != 38 || event.keyCode != 40 || event.keyCode != 17)
        {
            // execute this
        }


(CTRL键是该if语句中的最后一个键代码。)

搜索互联网后,它说使用17作为键码,但是如果我按CTRL,它仍在执行“ //执行此”。
它不应该执行它。

其他所有键在if语句中均能正常工作,并且我使用的是Chrome 31稳定版/官方版。

如您所见,我也在使用“ keydown”而不是“ keypress”。

在此先感谢您的帮助!

最佳答案

这种情况

event.keyCode != 13 || event.keyCode != 38 || event.keyCode != 40 || event.keyCode != 17


永远是真的。这可以用两种情况证明。


如果event.keyCode13,则event.keyCode != 38将使表达式返回true,因为13 != 38
如果event.keyCode不是13,则条件event.keyCode != 13将导致表达式返回true.


我相信您想使用&&运算符而不是||运算符。

另外,我认为使用event.keyCode !== 17而不是检查!event.ctrlKey,因为它告诉代码的读者您正在检查ctrl键,而您必须在键码表中查找17为了找出它的意思。

(顺便说一句,the !== and === operators are preferred in the Javascript community over the != and == operators。)

关于javascript - JavaScript-17的CTRL KeyCode不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20942094/

10-12 13:05
查看更多