JavaScript String.fromCharCode大小写敏感吗?

22

我只是监听输入元素的keyup事件,并将结果收集到一个字符串中,如下所示

word=word+String.fromCharCode(key.keyCode);
问题在于这个单词是大写的,而我希望它区分大小写。 例如,如果我输入abcef,我的累积单词会变成'ABCEF'。
注意 - 我需要一个纯JavaScript解决方案(不使用库...) 你有什么想法吗?

1
65 是大写字母“A”的 ASCII 码,而不是小写字母。 - Pointy
1
从字符编码转换为字符串,并将其转换为小写。 - jbabey
那么小写字母a的键码是什么?在谷歌上找不到答案... - Joel Blum
'keyup'事件将返回65,但'keypress'事件应该返回97作为小写! - adeneo
@adeneo,没错,你说对了!!那就是问题所在,我使用的是keyup,它的行为与预期不同。你可以把它写成答案,这样我就可以接受它了... - Joel Blum
2个回答

41

keyupkeydown 这样的事件会针对 aA 返回相同的值 65 (如果按下了 Shift 键,event.shiftKey 也会返回 true)

keypress 事件会为大写和小写字母返回不同的键码,因此如果要实现区分大小写,应该使用 keypress 事件,并使用 fromCharCode() 方法返回正确的字母,包括大小写敏感。


6
您可以始终检查event.shiftKey是否为true或false,并应用.toLowerCase()。 - Prusprus
我认为你需要检查一下,因为有些按键事件是无法像按下键那样被取消的。 - Ayyash

3

您可以随时调用.toLowerCase()方法。

word = word + String.fromCharCode(key.keyCode).toLowerCase();

在你决定完成字符累加的时候,一次性调用.toLowerCase()可能更有意义。


如果有本地解决方案,我建议不要这样做。 - marksyzm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接