【问题标题】:jquery not able to detect the caps lock on and off and keypress are capital or small [duplicate]jquery无法检测到大写锁定的开启和关闭以及按键是大写还是小[重复]
【发布时间】:2014-07-24 15:56:27
【问题描述】:

我有 2 个挑战,

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

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

我在谷歌搜索并找到了解决方案,但它不起作用。有人帮我解决这个问题吗?请使用大写锁定打开/关闭刷新页面以获取当前状态。没有任何效果。

这是我从谷歌搜索得到的功能:

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

【问题讨论】:

  • 检测不到,只能试探性地猜测。
  • 在加载页面时无法找到大写字母是打开还是关闭?。实际上答案是什么都试过了。问题是页面加载没有适当的扣除,再次混合 cpas+shit 和 shif+char 和 caps+shift+char - 无法正常工作。

标签: javascript jquery


【解决方案1】:

实际上你在调用capLock函数时传递的是e.which而不是e

试试这个:在调用 capLock 函数时只传递事件 e

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

Working JSFiddle

【讨论】:

  • 在使用 shift 键时,您的演示无法运行。请检查
  • 是否要检查 cap on/off 还是要检查它是否是大写字母?
  • 是的。确切地。有时,当页面自行加载时,用户可能会打开上限……这就是问题所在。
  • 所以根据你的脚本,它只会检查 cap 是打开还是关闭并且工作正常。
  • 我添加了我的答案,你能测试一下吗?
【解决方案2】:

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)
    });

【讨论】:

  • 如何在文件加载时找到大写锁定是打开还是关闭?
  • @3gwebtrain 请参考这个stackoverflow.com/questions/5371732/…
  • 您的演示无法正常工作。请在大写开/关状态下使用“shift”键按下键。
【解决方案3】:

我使用了一种新方法来查找按键上的字母:这是我的解决方案:

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

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

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 2013-05-07
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多