使用
我需要检测事件keydown和keyup中字符的大小写
$('body').keydown(
function(event) {
var charCode = (event.which) ? event.which : event.keyCode;
var char = String.fromCharCode(charCode);
console.log(char + " is down pressed");
}
);
$('body').keyup(
function(event) {
var charCode = (event.which) ? event.which : event.keyCode;
var char = String.fromCharCode(charCode);
console.log(char + " is up pressed");
}
);
你可以在这里试试:http://jsfiddle.net/8dqwW/
它总是返回大写字母,即使没有按下大写锁定。
在这两个事件中如何检测按大小写的字母
keyup
和keydown
无法检测大小写。
只有keypress
可以这样做!
使用event.key
和现代JS!
不再有数字编码。您可以直接查看key。例如:"Enter"
、"LeftArrow"
、"r"
、"R"
。"keypress"
、"keydown"
或"keyup"
都可以。
document.addEventListener("keypress", function (event) {
const key = event.key;
const keyLower = key.toLowerCase();
// Check it is a char between A-Z, not numbers, etc.
if (key.length !== 1 || keyLower < "a" || keyLower > "z") {
return;
}
// Check for case
const isUpperCase = (key !== keyLower);
});
你可以用一个正则表达式
来简化它const key = event.key;
const isLowerCaseLetter = (/[a-z]/.test(key));
const isUpperCaseLetter = (/[A-Z]/.test(key));
如果该字符在转换为大写后仍然相同,则该字符以大写开头:
if (fromCharCode(e.which).toUpperCase() == fromCharCode(e.which))
由于jQuery规范了e.which
,而keypress
事件的工作方式略有不同,我将这样做:
$('body').on({
keypress: function(e) {
var char = String.fromCharCode(e.which),
isUpper = char == char.toUpperCase();
console.log(char + ' is pressed' + (isUpper ? ' and uppercase' : ''))
}
});
小提琴