jquery无法检测大写锁定开启和关闭,按键是大写或小写

时间:2014-06-04 05:53:18

标签: javascript jquery

我有两个挑战,

  1. 在页面加载时,我想显示一条警告,说“已开启”。

  2. 用户仍然按下shift +键或Caps on +键 - 我想通过错误。

  3. 我在谷歌搜索并找到解决方案,但它不起作用。有人帮我解决这个问题吗?请使用大写锁定开启/关闭刷新页面以获取当前状态。什么都行不通。

    以下是我从谷歌搜索获得的功能:

    function capLock(e){
     kc = e.keyCode?e.keyCode:e.which;
     sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
     if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk))
      console.log('caps lock on')
     else
      console.log('caps lock off');
    }
    
    $('#password').on('keypress', function(e){
        capLock(e.which)
    })
    

    online demo

3 个答案:

答案 0 :(得分:0)

<强> Demo       不要通过e.which。你必须通过事件

 function capLock(e) {
        kc = e.keyCode ? e.keyCode : e.which;
        sk = e.shiftKey ? e.shiftKey : ((kc == 16) ? true : false);
        if (((kc >= 65 && kc <= 90) && !sk) || ((kc >= 97 && kc <= 122) && sk)) console.log('caps lock on')
        else console.log('caps lock off');
    }

    $('#password').on('keypress', function (e) {
        capLock(e)
    });

答案 1 :(得分:0)

实际上,在调用e.which函数时,您正在传递e而不是capLock

尝试此操作:在调用e函数时仅传递事件capLock

$('#password').on('keypress', function(e){
    capLock(e);
})

Working JSFiddle

答案 2 :(得分:0)

我用一种新方法在按键上找到字母:这是我的解决方案:

    $('#password').keypress(function(e) { 
    var Caps = null;
    var s = String.fromCharCode( e.which );
    if ( s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey ) {
        Caps = true;
    } else {
        Caps = false;
    }

    if(s.toUpperCase() === s){
        Caps = true;
    }else{
        Caps = false;
    }

    if(Caps){
        console.log('no use of the caps letter');
    }
});

任何评论或更正或更新..预期。感谢