我正在jQuery中构建一个虚拟键盘,使用键码事件来触发追加,但是键码组合让我陷入了循环。这是一个例子:
我只想在同时按下SHIFT键(键码16)和斜杠键(键码191)时附加问号。我想&&运算符会有所帮助,但这只会附加斜杠:
$(document).keydown(function(e) {
if (e.keyCode == 16 && e.keyCode == 188 ) {
$('#mydiv').append('<span>?</span>');
}
});
任何建议或想法为什么&amp;&amp;不起作用,可能有用吗?谢谢!
答案 0 :(得分:4)
检查e.keyCode == 16 && e.keyCode == 188
将无效,因为e.keyCode
不会同时为16和188。 &&
运算符是逻辑连接,因此如果它的两边的表达式都为真,则计算结果为true。
我想你想看e.shiftKey
;如果这是真的那么 Shift 键是关闭的,如果e.shiftKey
为假,则 Shift 不会关闭:
if(e.shiftKey && e.keyCode == 191) {
// ?
}
else if(!e.shiftKey && e.keyCode == 191) {
// /
}
答案 1 :(得分:0)
因为每个键都创建了自己的keydown事件,所以keyCode
永远不可能等于16和188。
幸运的是,SHIFT状态存储在event.shiftKey
:)
答案 2 :(得分:0)
试试这个
$(document).keydown(function(e) {
if (e.shiftKey){
if (e.which == 188) {
alert('both');
}
}
});