2012-08-09 77 views
3

我检查大写锁定是否打开与否下面的代码工作的“onkeypress事件”事件的罚款。检查的CapsLock ON

但我想它为“聚焦状态”事件。 我试图用控制的“onfocus”替换“onkeypress”,但它不适用于我。

任何帮助? (在JavaScript或jQuery的)

<script type="text/javascript" language="Javascript"> 
    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)) 
      document.getElementById('divMayus').style.visibility = 'visible'; 
     else 
      document.getElementById('divMayus').style.visibility = 'hidden'; 
    } 
</script> 

<input type="text" name="txtuname" /> 
<input type="password" name="txtPassword" onkeypress="capLock(event)" /> 
<div id="divMayus" style="visibility:hidden">Caps Lock is on.</div> 
+0

以上链接询问的CapsLock检测代码...这里IM询问其他event..i有代码...但我需要它在另一个事件 – Santosh 2012-08-09 12:20:46

回答

5

有是一个jQuery插件称为capslockstate将保持帽的状态的跟踪锁定键,让你到什么时候需要使用这些信息。

它会监视整个页面的状态,然后你可以检索的状态时所需的元素获得焦点。

它也是基于看着按键,包括但不限于较低的ASCII字符,并处理像大写的情况下锁定键被按下本身。

你的情况会变成这样的:

<script src="{path-to}/jquery-capslockstate.js"></script> 
<script> 
    $(document).ready(function() { 
     $(window).capslockstate(); 

     $(window).bind("capsOn", function(event) { 
      if ($("#txtPassword:focus").length > 0) { 
       document.getElementById('divMayus').style.visibility = 'visible'; 
      } 
     }); 
     $(window).bind("capsOff capsUnknown", function(event) { 
      document.getElementById('divMayus').style.visibility = 'hidden'; 
     }); 
     $("#txtPassword").bind("focusout", function(event) { 
      document.getElementById('divMayus').style.visibility = 'hidden'; 
     }); 
     $("#txtPassword").bind("focusin", function(event) { 
      if ($(window).capslockstate("state") === true) { 
       document.getElementById('divMayus').style.visibility = 'visible'; 
      } 
     }); 
    }); 
</script> 

<input type="text" name="txtuname" /> 
<input type="password" name="txtPassword" id="txtPassword" /> 
<div id="divMayus" style="visibility:hidden">Caps Lock is on.</div> 

请注意,我只jQueryified必要位,更多的还可以做。

+0

不适用于jsFiddle。使用Firefox 21. – mondjunge 2013-06-24 16:14:02

+1

@mondjunge这是因为我已经热门链接的是来自Github。他们不希望人们这样做,并添加了一些标题来阻止它。然而Firefox是当前唯一尊重标题的浏览器。如果托管得当,脚本可以在所有浏览器上运行。 – nosilleg 2013-08-02 23:48:21

+0

@mondjunge我终于通过使用非阻塞版本的js来修复演示。感谢您举报此事,哦很久以前。 – nosilleg 2014-01-14 00:28:14

0

遗憾的是没有 - 事件对象的keyCode属性仅在基于密钥的事件发送(原因很明显),这就是为什么它不会聚焦状态,等的onclick工作。

有没有这样做的任何其他JavaScript的方式 - 虽然有一个潜在的解决方案,如果您使用闪光灯 - 但似乎对你的要求有点矫枉过正...

+0

http://forums.adobe.com/message/3349870 - 讨论用闪光灯做这件事 - 如果大写锁定打开,只有一个swf显示一条消息是真正的唯一途径。 – 2012-08-09 16:08:04