项目中需要侦听键盘事件,按下键盘后捕获用户输入,根据keycode来分辨用户输入的字符,然后将字符发送到后台,在按下caps lock后,大小写字母的keycode都是一样的,所以无法捕获用户输入的是大写还是小写,怎么能获得caps lock的状态呢?

解决方案 »

  1.   


    function detectCapsLock(event){
        var e = event||window.event;
        var o = e.target||e.srcElement;
        var oTip = o.nextSibling;
        var keyCode = e.keyCode||e.which; // 按键的keyCode
        var isShift = e.shiftKey ||(keyCode ==   16 ) || false ; // shift键是否按住
         if (
         ((keyCode >=   65   && keyCode <=   90 ) &&   !isShift) // Caps Lock 打开,且没有按住shift键
         || ((keyCode >=   97   && keyCode <=   122 ) && isShift)// Caps Lock 打开,且按住shift键
         ){oTip.style.display = '';}
         else{oTip.style.display = 'none';}
    }
      

  2.   

    没办法判断,
    放在keypress中处理,这个事件中的大小写keycode是不一样的:document.onkeypress=function(e) {
        e = window.event || e;
        alert((e.keyCode || e.which));
    }