js 按键事件判断capslock是否开启

来源:互联网 发布:php调用api接口 post 编辑:程序博客网 时间:2024/06/05 16:05

    最近有用到输入密码时检查 capslock 是否开启的一个检查,看了一些博客,发现有通过keyCode返回的值来做检查的,其实这种做法不对,在这里说下我的实现方法:

    首先看下keyCode对应的键值对:

   

keycode    8 = BackSpace BackSpacekeycode    9 = Tab Tabkeycode   12 = Clearkeycode   13 = Enterkeycode   16 = Shift_Lkeycode   17 = Control_Lkeycode   18 = Alt_Lkeycode   19 = Pausekeycode   20 = Caps_Lockkeycode   27 = Escape Escapekeycode   32 = space spacekeycode   33 = Priorkeycode   34 = Nextkeycode   35 = Endkeycode   36 = Homekeycode   37 = Leftkeycode   38 = Upkeycode   39 = Rightkeycode   40 = Downkeycode   41 = Selectkeycode   42 = Printkeycode   43 = Executekeycode   45 = Insertkeycode   46 = Deletekeycode   47 = Helpkeycode   48 = 0 equal bracerightkeycode   49 = 1 exclam onesuperiorkeycode   50 = 2 quotedbl twosuperiorkeycode   51 = 3 section threesuperiorkeycode   52 = 4 dollarkeycode   53 = 5 percentkeycode   54 = 6 ampersandkeycode   55 = 7 slash braceleftkeycode   56 = 8 parenleft bracketleftkeycode   57 = 9 parenright bracketrightkeycode   65 = a Akeycode   66 = b Bkeycode   67 = c Ckeycode   68 = d Dkeycode   69 = e E keycode   70 = f Fkeycode   71 = g Gkeycode   72 = h Hkeycode   73 = i Ikeycode   74 = j Jkeycode   75 = k Kkeycode   76 = l Lkeycode   77 = m M keycode   78 = n Nkeycode   79 = o Okeycode   80 = p Pkeycode   81 = q Qkeycode   82 = r Rkeycode   83 = s Skeycode   84 = t Tkeycode   85 = u Ukeycode   86 = v Vkeycode   87 = w Wkeycode   88 = x Xkeycode   89 = y Ykeycode   90 = z Z
对于同一个字母的大小写,keycode返回的值相同,所以通过检查 shift 键和keycode返回的值,是行不通的,后来查到函数 

charCodeAt() ,  该方法可返回指定位置的字符的 Unicode 编码 , 通过与shift键对于的keycode,就可以判断capslock是否开启了

function capslockonoff($input){$input.keyup(function(event){var e = event||window.event;var keyvalue = e.keyCode ? e.keyCode : e.which;var shifKey = e.shiftKey ? e.shiftKey:((keyvalue == 16) ? true : false);var strlen = $input.val().length;if(strlen){var uniCode = $input.val().charCodeAt($input.val().length-1);if(keyvalue>=65 && keyvalue<=90){     //如果是字母键if(((uniCode >= 65 && uniCode <= 90) && !shifKey)||((uniCode >= 97 && uniCode <= 122) && shifKey)){return true;  //开启}else{return false;  //未开启}}}});}

参数是对应的输入框DOM对象

0 0
原创粉丝点击