智能手机上如何检测大写锁定键是否开启

7

我想在智能手机上检测大写锁定键,它们有一个小箭头,基本上就是一个大写锁定键。

我尝试搜索,但只找到了如何在桌面上执行此操作:

$('input').keypress(function(e) { 
  var s = String.fromCharCode( e.which ); 
  if ( s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey ) { 
    alert('caps is on');
  }
});

但这在智能手机上无法实现,我该如何达成这个目标或者它是否可能?

1
智能手机上无法检测大写锁定状态。尝试接受的答案来使用此问题中的方法,该方法不能保证100%有效,但仍然比没有好。 - Taylan Aydinli
2
好的,但智能手机并不仅限于IOS,无论如何谢谢 :) - Niket Malik
是的,但这会失去“大写锁定”警告的作用。 - Niket Malik
1
我觉得我在这里没有被理解 :) 检查大写锁定是完全不可能的。这只是一种替代方法,显然不是理想的,但不幸的是它是下一个最好的选择。你要么停止抱怨这种方法“打败了目的”,使用它并知道它是你现在能得到的最好的东西,要么不使用它并继续你的生活。 - Taylan Aydinli
1
你也可以只放一个警告,写上“区分大小写”(假设这是针对密码的)。 - Trojan
显示剩余2条评论
1个回答

0

使用HTML/JavaScript/jQuery无法在所有智能手机上检测大写锁定键。事实上,更进一步说,仅使用HTML/JavaScript/jQuery无法可靠地检测所有智能手机的任何特定按键。例如,Android的Google Chrome浏览器(不一定是原生Android浏览器)存在一个错误,无论按下哪个键,它都返回0的按键代码。也许有一天这个问题会得到解决,但自从第一个版本以来就一直存在了几年。

也许如果你的目标是特定的浏览器/智能手机集合,那么这对你来说就不是一个问题。例如,坚持使用iOS、Windows Phone 8和Android浏览器,但真的值得一提的是,没有一个万能的解决方案可以覆盖所有智能手机。

如果您正在开发混合应用程序而不是网站,例如使用PhoneGap,您可以选择使用本机插件捕获按键并将其移交给PhoneGap,以便您可以在JavaScript/jQuery中使用。


是的,对于 Chrome 浏览器达成一致。此外,它无法检测到退格键的 keyup 事件,但可以检测到长按退格键的 keyup 事件。 - Niket Malik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接