我想知道在填写Web表单时是否可以知道大写锁定按钮是否处于活动状态?在窗体中输入时是否可以检查大写锁定按钮是否处于活动状态?
有时候,当你被要求输入密码时,软件会发现你的密码是活动的,而且你要小心。
我会喜欢在网页表单中做同样的事情。
任何想法?
我想知道在填写Web表单时是否可以知道大写锁定按钮是否处于活动状态?在窗体中输入时是否可以检查大写锁定按钮是否处于活动状态?
有时候,当你被要求输入密码时,软件会发现你的密码是活动的,而且你要小心。
我会喜欢在网页表单中做同样的事情。
任何想法?
像这样访问用户设置将违反任何像样的安全模型,但是您可以检查用户是否输入了ALL_CAPS或aLL_CAPS并进行了适当的警告。
优雅的变通办法可以在这里找到:http://24ways.org/2007/capturing-caps-lock
可悲的是,没有任何的实际检测锁是否帽子是直接在途中。但是,有一个简单的解决方法;如果用户按下一个键,并且它是大写字母,并且没有按下Shift键,为什么他们必须有Caps Lock!简单。
我明确地认为解析用户输入那样将是一个坏主意! 我的密码可能是FOOBAR,我不想被注意到! 它不应该禁用输入给用户,但只是注意到他,这是大写锁定处于活动状态。 – 2009-06-01 13:37:19
你编辑引入了一个不错的想法来检查它 – 2009-06-01 14:12:38
是的,检测到shift键而不是大写锁定 - 简单而聪明! – Pool 2009-06-01 14:17:19
尝试
<html>
<head>
<script type="text/javascript">
function checar_caps_lock(ev) {
var e
= ev || window.event;
codigo_tecla = e.keyCode?e.keyCode:e.which;
tecla_shift = e.shiftKey?e.shiftKey:((codigo_tecla == 16)?true:false);
if(((codigo_tecla >= 65 && codigo_tecla <= 90) && !tecla_shift) || ((codigo_tecla >= 97 && codigo_tecla <= 122) && tecla_shift)) {
document.getElementById('aviso_caps_lock').style.visibility = 'visible';
}
else {
document.getElementById('aviso_caps_lock').style.visibility = 'hidden';
}
}
</script>
</head>
<body>
<form>
<input name="nome_do_campo" type="text" onkeypress="checar_caps_lock(event)" />
<div id="aviso_caps_lock" style="visibility: hidden">CAPS LOCK ATIVADO</div>
</form>
</body>
</html>
以下jQuery的片段检测瓶盖是否锁定在按键启用:
$('#example').keypress(function(e) {
var s = String.fromCharCode(e.which);
if (s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey) {
alert('caps is on');
}
});
来自StackOverflow的答案摘自:https://stackoverflow.com/a/896515/1113435
这似乎是一个非常稳固的解决方案。 jsFiddle here:http://jsfiddle.net/p25sq/ – 2013-07-03 03:05:48
请注意,此解决方案仅适用于按键,但在使用keydown或keyup时,String.fromCharCode()始终返回大写字母。 – user5513314 2017-04-19 21:13:24
有趣的是,这只是与按键一起使用,而不使用键控和按键。只知道,这样的:
$("#example").keypress(function(e) {
console.log("keypress: " + e.which);
});
$("#example").keydown(function(e) {
console.log("keydown: " + e.which);
});
$("#example").keyup(function(e) {
console.log("keyup: " + e.which);
});
( “A” 按下)返回此:
keydown: 65
keypress: 97
keyup: 65
注:与Chrome和Firefox试图
的
可能重复[你怎么知道,如果大写锁定是在使用JavaScript?](http://stackoverflow.com/questions/348792/how-do-you-tell-if-caps-lock-is-on-using-javascript) – sg3s 2013-08-27 10:26:34