jquery无法检测到大写锁定的开启和关闭以及按键是大写还是小[重复]

Posted

技术标签:

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

我有 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 - 无法正常工作。 【参考方案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 请参考这个***.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');
    
);

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

【讨论】:

以上是关于jquery无法检测到大写锁定的开启和关闭以及按键是大写还是小[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在android上以编程方式打开/关闭大写锁定和shift键

使用jQuery检测大写锁定开/关[重复]

如何在没有按键的情况下更改大写锁定状态

使用 jQuery 显示大写锁定 [重复]

win10用autohotkey怎样将caps改为caps+esc就是按caps+esc锁定大写?

在javascript中检测按键的最简单方法[关闭]