2012-08-09 69 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