Javascript 如何在onkeydown事件处理程序方法中区分大写字母和小写字母 试验 函数showChar(e){ 如果(例如keyCode!=16){ 警觉的( keyCode:“+e.keyCode+”\n +按下SHIFT键:“+e.shiftKey+”\n ); } }
按住或不按住任意字符键 按下SHIFT键。Javascript 如何在onkeydown事件处理程序方法中区分大写字母和小写字母 试验 函数showChar(e){ 如果(例如keyCode!=16){ 警觉的( keyCode:“+e.keyCode+”\n +按下SHIFT键:“+e.shiftKey+”\n ); } },javascript,onkeydown,Javascript,Onkeydown,按住或不按住任意字符键 按下SHIFT键。 在onkeydown事件处理程序方法中,如何区分大写A和小写A?上述算法触发相同的keyCode值。我需要在按下onkeydown键时检测大写字母 注意:该代码包含SHIFT键的异常。否则,它不允许键入大写字母。顺便说一句,我需要使用onkeydown进行试用。在我看来,你回答了自己的问题。如果检测到SHIFT键,则可以轻松区分大小写: <html> <head> <title>Test</title>
在onkeydown事件处理程序方法中,如何区分大写A和小写A?上述算法触发相同的keyCode值。我需要在按下onkeydown键时检测大写字母
注意:该代码包含SHIFT键的异常。否则,它不允许键入大写字母。顺便说一句,我需要使用onkeydown进行试用。在我看来,你回答了自己的问题。如果检测到SHIFT键,则可以轻松区分大小写:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function showChar(e) {
if (e.keyCode != 16) {
alert(
"keyCode: " + e.keyCode + "\n"
+ "SHIFT key pressed: " + e.shiftKey + "\n"
);
}
}
</script>
</head>
<body onkeydown="showChar(event);">
<p>Press any character key, with or without holding down
the SHIFT key.<br /></p>
</body>
</html>
还是我误解了你的问题
更新:通过添加32,大写ASCII码可以轻松转换为小写ASCII码,因此您只需执行以下操作:
if(e.shiftKey){
alert("You pressed a CAPITAL letter with the code " + e.keyCode);
}else{
alert("You pressed a LOWERCASE letter with the code " + e.keyCode);
}
试验
函数showChar(e){
如果(e.keyCode!=16){//如果按下的键不是SHIFT键
如果(e.keyCode>=65&&e.keyCode我在这个问题上做了相当多的搜索,因为我写的代码将输入元素(使用按键事件)限制为仅包含字母字符。我使用的是“字符代码介于65和90之间”,无法在字段中输入小写字母
我最终发现JavaScript使用ASCII码来实现这一点,所以我添加了“以及97和122之间的代码”和viola!我能够输入大写和小写字母。也就是说:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function showChar(e){
if(e.keyCode!=16){ // If the pressed key is anything other than SHIFT
c = String.fromCharCode(e.keyCode);
if(e.shiftKey){ // If the SHIFT key is down, return the ASCII code for the capital letter
alert("ASCII Code: "+e.keyCode+" Character: "+c);
}else{ // If the SHIFT key is not down, convert to the ASCII code for the lowecase letter
c = c.toLowerCase(c);
alert("ASCII Code: "+c.charCodeAt(0)+" Character: "+c);
}
}
}
</script>
</head>
<body onkeydown="showChar(event);">
<p>Press any character key, with or without holding down
the SHIFT key.<br /></p>
</body>
</html>
仅限字母功能(e){
"严格使用",;
如果(!e){//补偿IE的关键代码报告。
e=窗口事件;
}
var charCode=(e.which)?e.which:event.keyCode;
如果((charCode>=65&&charCode=97&&charCode更近、更干净:使用event.key
。不再使用任意数字代码
function alphaOnly(e) {
'use strict';
if (!e) { // compensates for IE's key code reporting.
e = window.event;
}
var charCode = (e.which) ? e.which : event.keyCode;
if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) {
return true;
} else {
return false;
}
}
但键码是否也应该更改?我需要将与键码或其他内容的差异作为一个值。在这两个示例中,键码是相同的。我寻求一种方法,为大写字母a和小写字母a提供不同的键码。请查看上面我的答案的更新。我想这就是您要寻找的。谢谢,这很好但我如何才能添加对UTF-8的支持呢?比如大写字母和小写字母抛出“ASCII码(非字母)”警报。是否有可能在onkeydown中将Unicode大写字母latters与小写字母区分开来。我添加了一些代码。我不知道这是否会起作用,但可能会起作用。keyCode是keyCode而不是字符代码的原因是keyCode是表示按下哪个键的keyCode。按键本身并没有说明字符将是大写字母、数字、标点符号或其他任何字符。此外,键本身并不表示CAPS LOCK是否处于活动状态,但如果CAPS LOCK处于活动状态,则Shift键位的存在将指示此代码正在执行的相反操作。CAPS LOCK呢?
function alphaOnly(e) {
'use strict';
if (!e) { // compensates for IE's key code reporting.
e = window.event;
}
var charCode = (e.which) ? e.which : event.keyCode;
if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122)) {
return true;
} else {
return false;
}
}
node.addEventListener('keydown', function(event) {
const key = event.key; // "a", "1", "Shift", etc.
if (/^[a-z]$/i.test(key)) { // or if (key.length === 1 && /[a-z]/i.test(key))
const isCapital = event.shiftKey;
}
});