您如何确定大写锁定是否在使用JavaScript?
需要注意的是:我用google搜索了,找到的最佳解决方案是将onkeypress
事件附加到每个输入,然后每次检查所按字母是否为大写,如果是,则检查是否也按住shift键。如果不是,则必须打开大写锁定。这感觉真的很脏而且只是…
浪费 -当然有比这更好的方法了吗?
您可以尝试一下。添加了一个有效的示例。当焦点位于输入上时,打开大写锁定会使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或’ä’,’ö’,’ü’
上面的键只是示例表示。
问题内容: 我正在尝试为我的工作场所建立一个更好的用户名/密码字段,并希望能够在他们的工作帽锁定时抱怨。 这可能吗?如果是这样,我希望在客户键入他们的第一个字母之前检测到它。 是否有非特定于平台的方式来做到这一点? 问题答案: 尝试从java.awt.Toolkit返回一个布尔值:
问题内容: 我在线上看过很多教程,说您需要检查服务器是否通过HTTPS进行了安全连接。我的问题是,在我使用的某些服务器上,这是一个未定义的变量,导致错误。我可以检查是否应该定义另一个变量? 为了清楚起见,我目前正在使用以下代码来确定它是否为HTTPS连接: 问题答案: 即使未定义,这也应该始终有效 : 该代码与IIS兼容。 : 1)如果通过HTTPS协议查询脚本,则设置为非空值。 2)请注意,当将
问题内容: 我有一个需要用户输入密码的应用程序。 我想要做的是从控制台读取密码(如果操作系统支持unix)或显示JOptionPane并要求用户输入密码(如果操作系统支持图形界面(例如Windows))。 有人可能会争辩说,在上述两种情况下控制台始终可用,因此控制台输入就足够了。但是问题是,如果Java应用程序开始使用javaw.exe,则控制台不可用。因此,我需要一种方法来确定我是否可以做任何一
我们使用.Net MySql Connector的v6.9.9使用此连接字符串访问MySql,指定需要SSL。 我们的DBA已经启用了对SSL的支持,但在测试期间,无论我的机器上是否安装了证书,也不管我是否具有“SSL模式=必需”都可以连接到服务器。 然而,当我的DBA禁用SSL时,如果我使用上述连接字符串,我会得到一个错误,即SSL未启用。 因此,我真的不知道我的网络流量是否被加密。如何验证?
问题内容: 在JMS中,很容易找出连接是否丢失,是否发生异常。但是,如何确定连接是否再次存在? 场景:我使用JMS与服务器通信。现在我的连接断开了(服务器已关闭),这导致了异常。到目前为止,一切都很好。如果服务器再次启动并重新建立连接,我怎么知道? 我看不到任何可以提供此类信息的侦听器。 问题答案: 啊…旧的异常处理/重新连接难题。 有些传输提供程序将为您自动重新连接您的应用程序,而另一些传输提供
问题内容: 我有一个进程A,它在内存中包含一个带有一组记录(recordA,recordB等的表)的表。 现在,此过程可以启动许多影响记录的线程,有时我们可以有2个线程尝试访问同一记录- 必须拒绝这种情况。具体来说,如果一条记录被一个线程锁定,我希望另一个线程中止(我不想阻止或等待)。 目前,我正在执行以下操作: 但这引起了我的问题…因为Process1在执行操作时,如果Process2进入其中,