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键