Tom*_*mer 19 javascript jquery
我正在尝试写一些类似于'占位符'polyfill的东西.我想在输入字段上捕获keyup事件并获取用户输入的char,所以我有这样的代码:
$elem.on('keyup',function(e){
var $this = $(this),
val = $this.val(),
code = (e.keyCode ? e.keyCode : e.which);
console.log(String.fromCharCode(code));
});
Run Code Online (Sandbox Code Playgroud)
问题是这总是返回压缩字符的大写版本,我怎么知道按下的字符是大写还是小写?
我知道keypress提供了按下的char但它不会在所有按键事件(如退格键)上激活.
Ed *_*tes 14
您无法轻易地从密钥中获取此信息,因为密钥只知道正在按下哪些密钥,而不是正在键入的字母.您可以检查Shift键是否已关闭,您也可以尝试自行跟踪大写锁定,但如果有人在浏览器外按下它,您最终会得到错误的大小写字符.
你可以试试按键事件.虽然jQuery报告它并不总是表现相同的跨浏览器.来自doc:
请注意,keydown和keyup提供一个代码,指示按下哪个键,而keypress指示输入了哪个字符.例如,小写的"a"将通过keydown和keyup报告为65,但是按key按97报告.所有事件都将大写的"A"报告为65.由于这种区别,当捕获箭头键,.keydown()或.keyup()等特殊键击时是更好的选择.