1,在按钮中配置onkeypress
<input name='test' onkeypress ="testCapsLock(event)" />
2,在JavaScript中判断
function testCapsLock(e){
var valueCapsLock = e.keyCode ? e.keyCode:e.which; // 按键
var valueShift = e.shiftKey ? e.shiftKey:((valueCapsLock == 16 ) ? true : false ); // shift键是否按住
if (((valueCapsLock >= 65 && valueCapsLock <= 90 ) && !valueShift) // 输入了大写字母,并且shift键没有按住,说明Caps Lock打开
|| ((valueCapsLock >= 97 && valueCapsLock <= 122 ) && valueShift)){// 输入了小写字母,并且按住 shift键,说明Caps Lock打开
return true;
} else {
return false;
}
}
也就是说,没按着shift,还输入了大写,或者按着shift还输入了小写,就判断为Caps Lock是打开的。
shift键的keyCode是16,除此之外,其他一些功能键的keyCode如下:
event.keyCode=32 空格
event.keyCode=13 回车
event.keyCode=27 Esc
event.keyCode=16 Shift
event.keyCode=17 Ctrl
event.keyCode=18 Alt
补充扫描枪在文本框的扫描的情况:
1,上面的代码对扫描枪录入依然有效。
2,扫描枪输入不依赖键盘,我把键盘拆下来之后扫描枪可以正常录入。
3,扫描枪扫描的结果会受到键盘的Caps Lock和shift键的影响。
如果Caps Lock大写锁定打开,扫描枪扫描小写字母生成的条码,会输入大写字母,反之如果扫描大写字母生成的条码,会输入小写字母(输入规则同键盘)
如果手动按着shift键,扫描枪扫描数字生成的条码,会输入数字键上方的字符(!@#$等,输入规则同键盘)