有没有办法找出用户是按了百分比键还是5号?它在FireFox中具有相同的密钥代码。
答案 0 :(得分:14)
您可以检查事件对象提供的修饰键。 event.shiftKey
适用于您的特定用例。此外,还有event.altKey
,event.ctrlKey
和event.metaKey
(对于Windows中的Windows键和MAC键盘中的命令键)属性。
在代码示例中,您必须在keyCode处理程序中执行检查:
var NUMBER_FIVE = 53;
element.onkeydown = function (event) {
if (event.keyCode == NUMBER_FIVE) {
if (event.shiftKey) {
// '%' handler
} else {
// '5' handler
}
}
};
此外,在使用event.keyCode
时,您正在处理用户在键盘上按下的内容。如果您要检查特定的ASCII字符,那么您可以使用event.charCode
代替,因为此事件属性会告诉您用户输入的字符,而不是告诉您用户正在按什么字符键盘。 Here's a complete guide for this on quirksmode.
答案 1 :(得分:4)
如果您使用keydown
,则5和%是相同的keyCode。事件对象还有一个shiftKey
布尔属性,它将告诉您用户是否持有shift。
document.onkeydown = function (e) {
if (e.keyCode === 53) {
if (e.shiftKey) {
// they pressed %
} else {
// they pressed 5
}
}
};
如果你想使用keypress
,它们是两个不同的keyCodes:
document.onkeypress = function (e) {
if (e.keyCode === 53) {
// they pressed 5
}
if (e.keyCode === 37) {
// they pressed %
}
};
This site适用于测试keyCodes。
答案 2 :(得分:0)
检查shiftKey值:jsfiddle
$(document).keydown(function(e){
if( e.keyCode == 53 ){
if(e.shiftKey){
// % pressed
}
else{
// 5 pressed
}
}
});
答案 3 :(得分:0)
我测试了keyCode和输入字符的值。
$(document).on({
keypress: function(event){
var charCode = (event.which) ? event.which : event.keyCode;
var mFive = String.fromCharCode(event.which);
if ((charCode == 53) && (mFive === "5")){
return true;
}else if ((charCode == 53) && (mFive !== "5")){
return false;
}
});