我正在制作一个需要检测是否按下了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.keyCode
是13
,则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/