我发现这段代码很有趣,因为每次我按下键盘上的一个键都会发出警报。但是如何使用组合
检测密钥示例
ETC。我想要的任何组合。
我尝试他的代码并为其创建一个if语句
$(document).keypress(function(event){
alert(String.fromCharCode(event.which));
if( String.fromCharCode(event.which) == "a"){
alert("Hi A.");
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
归功于 Coyod
答案 0 :(得分:1)
如果您将事件更改为keydown
,您将获得额外的事件数据,告诉您是否按下了任何修改键。
然后在事件回调中,您可以检查event.altKey
以检查当前是否按下了alt键。
$(document).keydown(function(event) {
if (event.altKey) {
switch (String.fromCharCode(event.which)) {
case 'A':
console.log('Hi A')
break
case 'B':
console.log('Hi B')
break
}
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
这是一个更好的示例,它将保持所有按键的状态,允许您测试是否同时按下多个键。在回调中你有一个函数checkKeysPressed
,它接受你希望添加事件的键,如果按下这些键,函数将返回true。
它使用ES6语法,函数和对象,但它可以很容易地转换为ES5,或者只是通过babel运行。
const multipleKeysEventListener = (element, callback) => {
const keysPressed = new Set
const describeKey = e => {
switch(e.which) {
case 18:
return 'ALT'
case 16:
return 'SHIFT'
default:
return String.fromCharCode(e.which)
}
}
const checkPressedKeys = (...keys) =>
keys.every(x =>
keysPressed.has(
typeof(x) === 'number'
? String.fromCharCode(x)
: x
)
)
const down = e => {
keysPressed.add(describeKey(e))
return callback(checkPressedKeys, e)
}
const up = e => {
keysPressed.delete(describeKey(e))
}
$(element).keydown(down)
$(element).keyup(up)
}
multipleKeysEventListener(document, (checkKeysPressed, e) => {
switch (true) {
// you can pass keys
case checkKeysPressed('A', 'B'):
console.log('A and B pressed')
break
// you can pass modifiers
case checkKeysPressed('ALT', 'A'):
console.log('ALT and A pressed')
break
// and you can pass keyCodes
case checkKeysPressed('ALT', 67):
console.log('ALT and C pressed')
break
default:
console.log(String.fromCharCode(e.which))
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>