在键入表单时是否可以检查大写锁定按钮是否处于活动状态?

时间:2009-06-01 13:28:27

标签: javascript

我想知道在填写网页表单时是否可以知道大写锁定按钮是否有效?

有时,当您被要求输入密码时,软件会发现您处于活动状态,并且您会小心。

我希望在网络表单中也这样做。

有什么想法吗?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>

答案 2 :(得分:0)

有趣的是,这只适用于按键,而不适用于keyup和keydown。只是要知道,这个:

$("#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);
});

(&#34; a&#34;按下)返回:

keydown: 65
keypress: 97
keyup: 65 

注意:尝试使用chrome和firefox

答案 3 :(得分:-1)

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

在这里可以找到优雅的解决方法:http://24ways.org/2007/capturing-caps-lock

  

可悲的是,没有办法直接检测Caps Lock是否打开。但是,有一个简单的解决方法;如果用户按下一个键,并且它是一个大写字母,并且他们没有按住Shift键,为什么他们必须打开大写锁定!简单。