2009-06-01 67 views
13

我想知道在填写Web表单时是否可以知道大写锁定按钮是否处于活动状态?在窗体中输入时是否可以检查大写锁定按钮是否处于活动状态?

有时候,当你被要求输入密码时,软件会发现你的密码是活动的,而且你要小心。

我会喜欢在网页表单中做同样的事情。

任何想法?

+1

可能重复[你怎么知道,如果大写锁定是在使用JavaScript?](http://stackoverflow.com/questions/348792/how-do-you-tell-if-caps-lock-is-on-using-javascript) – sg3s 2013-08-27 10:26:34

回答

-1

像这样访问用户设置将违反任何像样的安全模型,但是您可以检查用户是否输入了ALL_CAPS或aLL_CAPS并进行了适当的警告。

优雅的变通办法可以在这里找到:http://24ways.org/2007/capturing-caps-lock

可悲的是,没有任何的实际检测锁是否帽子是直接在途中。但是,有一个简单的解决方法;如果用户按下一个键,并且它是大写字母,并且没有按下Shift键,为什么他们必须有Caps Lock!简单。

+1

我明确地认为解析用户输入那样将是一个坏主意! 我的密码可能是FOOBAR,我不想被注意到! 它不应该禁用输入给用户,但只是注意到他,这是大写锁定处于活动状态。 – 2009-06-01 13:37:19

+0

你编辑引入了一个不错的想法来检查它 – 2009-06-01 14:12:38

+0

是的,检测到shift键而不是大写锁定 - 简单而聪明! – Pool 2009-06-01 14:17:19

0

尝试

<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> 
1

以下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

+0

这似乎是一个非常稳固的解决方案。 jsFiddle here:http://jsfiddle.net/p25sq/ – 2013-07-03 03:05:48

+0

请注意,此解决方案仅适用于按键,但在使用keydown或keyup时,String.fromCharCode()始终返回大写字母。 – user5513314 2017-04-19 21:13:24

0

有趣的是,这只是与按键一起使用,而不使用键控和按键。只知道,这样的:

$("#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试图

相关问题