您如何确定大写锁定是否在使用JavaScript?
需要注意的是:我用google搜索了,找到的最佳解决方案是将onkeypress事件附加到每个输入,然后每次检查所按字母是否为大写,如果是,则检查是否也按住shift键。如果不是,则必须打开大写锁定。这感觉真的很脏而且只是… 浪费 -当然有比这更好的方法了吗?
onkeypress
您可以尝试一下。添加了一个有效的示例。当焦点位于输入上时,打开大写锁定会使LED变为红色,否则变为绿色。(尚未在Mac / Linux上进行过测试)
注意:这两个版本都对我有用。感谢您在评论中的建设性投入。
另外,这是修改后的版本(有人可以在Mac上测试并确认)
新版本:
function isCapslock(e){ const IS_MAC = /Mac/.test(navigator.platform); const charCode = e.charCode; const shiftKey = e.shiftKey; if (charCode >= 97 && charCode <= 122){ capsLock = shiftKey; } else if (charCode >= 65 && charCode <= 90 && !(shiftKey && IS_MAC)){ capsLock = !shiftKey; } return capsLock; }
旧版本:
函数isCapslock(e){
e = (e) ? e : window.event; var charCode = false; if (e.which) { charCode = e.which; } else if (e.keyCode) { charCode = e.keyCode; } var shifton = false; if (e.shiftKey) { shifton = e.shiftKey; } else if (e.modifiers) { shifton = !!(e.modifiers & 4); } if (charCode >= 97 && charCode <= 122 && shifton) { return true; } if (charCode >= 65 && charCode <= 90 && !shifton) { return true; } return false;
}
对于国际字符,可以根据需要为以下键添加附加检查。您必须获取感兴趣字符的键码范围,可能是通过使用一个键映射数组,该数组将保存您要寻址的所有有效用例键。
大写AZ或’Ä’,’Ö’,’Ü’,小写aZ或0-9或’ä’,’ö’,’ü’
上面的键只是示例表示。