<html>
<head>
<title>CapsLock Demo</title>
<script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js" type="text/javascript" charset="utf-8"></script>
<script src="./CapsLock.js?ver=1.0" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
window.addEvent('domready', function() {
var pass = document.id('passcapsnotice'),
user = document.id('usercapsnotice'); function passCapsOn() { pass.setStyle('display', 'block'); }
function passCapsOff() { pass.setStyle('display', 'none'); } function userCapsOn() { user.setStyle('display', 'block'); }
function userCapsOff() { user.setStyle('display', 'none'); } document.id('username').addEvents({
'capsLockOn': userCapsOn,
'capsLockOff': userCapsOff,
'blur': userCapsOff,
'focus': function(event) {
if (event.hasCapsLock()) { userCapsOn(); }
}
}); document.id('password').addEvents({
'capsLockOn': passCapsOn,
'capsLockOff': passCapsOff,
'blur': passCapsOff,
'focus': function(event) {
if (event.hasCapsLock()) { passCapsOn(); }
}
}); });
</script>
<style type="text/css">
form {
width: 500px;
margin: 0 auto;
}
.label { width: 60px; }
.field { width: 260px; }
.notice {
display: none;
line-height: 2em;
margin-top: .5em;
padding: 0;
}
</style>
</head> <body>
<form>
<fieldset>
<legend>Login</legend>
<table>
<tbody>
<tr>
<td class="label"><label for="username">Username:</label></td>
<td class="field"><input type="text" id="username" name="username" class="title" /></td>
<td><span id="usercapsnotice" class="notice">Caps On.</span></td>
</tr>
<tr>
<td class="label"><label for="password">Password:</label></td>
<td class="field"><input type="password" id="password" name="password" class="title" /></td>
<td><span id="passcapsnotice" class="notice">Caps On.</span></td>
</tr>
</tbody>
</table>
</fieldset>
</form>
</body>
</html>

其中:

(function() {

    Browser.CapsLock = null;
var capsOn = null,
target = (Browser.Engine.trident) ? document : window; /**
* Figure out if caps lock is on by checking for a lower case letter with shift
* pressed or an uppercase letter without shift. Once we know if it is on/off,
* remove the event listener.
*/
function checkCapsKey(event) {
if (event.code > 64 && event.code < 91) { // Capital Letters
Browser.CapsLock = capsOn = (event.shift) ? null : true;
} else if (event.code > 96 && event.code < 123) { // Lower-case Letters
Browser.CapsLock = capsOn = (event.shift) ? true : false;
} if (capsOn !== null) {
target.removeEvent('keypress', checkCapsKey);
}
} /**
* If user moves away from the window, we can't tell what happened with the caps
* key when he returns so we reset the caps checker.
*/
window.addEvent('blur', function(event) {
Browser.CapsLock = capsOn = null;
target.addEvent('keypress', checkCapsKey);
}); /**
* Checks an event for caps lock key presses. If it's Safari 3+, keyup means caps lock
* is off and keydown means caps lock is on. Otherwise just toggle the value of capsOn.
*/
function checkCapsPress(event) {
if (event.code == 20 && capsOn !== null) {
if (Browser.Engine.webkit && Browser.Engine.version > 420) {
Browser.CapsLock = capsOn = (event.event.type == 'keydown');
} else {
if (event.event.type == 'keydown') {
Browser.CapsLock = capsOn = !capsOn;
}
}
}
} /**
* Add events to the target to monitor for caps lock key presses and to do
* the initial caps lock key sniffing.
*/
target.addEvents({
'keyup': checkCapsPress,
'keydown': checkCapsPress,
'keypress': checkCapsKey
}); Event.implement({ hasCapsLock: function(event) { return capsOn; } }); Element.Events.capsLockOn = {
base: 'keydown',
condition: function(event) {
if (event.code == 20) {
if (Browser.Engine.webkit && Browser.Engine.version > 420) {
return true;
} else if (capsOn !== null) {
return !capsOn;
}
} else if (capsOn !== null) {
return event.hasCapsLock();
}
}
}; Element.Events.capsLockOff = {
base: (Browser.Engine.webkit) ? 'keyup' : 'keydown',
condition: function(event) {
if (event.code == 20) {
if (Browser.Engine.webkit && Browser.Engine.version > 420) {
return true;
} else if (capsOn !== null) {
return (capsOn === true);
}
} else if (capsOn !== null) {
return !event.hasCapsLock();
}
}
}; })();

js大小写锁判断的更多相关文章

  1. JS 中如何判断 undefined 和 null

    JS 中如何判断 undefined JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断. 以下是不正确的 ...

  2. js 正则之 判断密码类型

    原文:js 正则之 判断密码类型 今天没啥写的,就分享个思路吧.之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的.如果用 , 条判断,那就老长一大段了.这个思路是我之前看 jQuer ...

  3. js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结

    1.js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结 : http://www.haorooms.com/post/js_pc_iosandmobile 2.Js判断客户端是否为PC还是手 ...

  4. JS前端开发判断是否是手机端并跳转操作(小结)

    JS前端开发判断是否是手机端并跳转操作(小结) 这篇文章主要介绍了JS前端开发判断是否是手机端并跳转操作,非常不错,具有参考借鉴价值,需要的朋友可以参考下 常用跳转代码 ? 1 2 3 4 5 6 7 ...

  5. JS用斜率判断鼠标进入DIV四个方向的方法 判断鼠标移入方向

    本文要介绍的是一种鼠标从一个元素移入移出时,获取鼠标移动方向的思路.这个方法可以帮助你判断鼠标在移入移出时,是从上下左右的哪个方向发生的.这个思路,是我自己琢磨出来,利用了一点曾经高中学过的数学知识, ...

  6. JS中如何判断对象是对象还是数组

    JS中如何判断对象是对象还是数组 一.总结 一句话总结:typeof Array.isArray === "function",Array.isArray(value)和Objec ...

  7. js之checkbox判断常用示例

    checkbox常用示例可参考: 关于checkbox自动选中 checkbox选中并通过ajax传数组到后台接收 MP实战系列(十三)之批量修改操作(前后台异步交互) 本次说的是,还是关于智能门锁开 ...

  8. 160304-02、JS 中如何判断null 和undefined

    JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断. 以下是不正确的用法: var exp = undef ...

  9. js正则表达式,判断字符串是否以数字组结尾,并取出结尾的数字

    js正则表达式,判断字符串是否以数字组结尾,并取出结尾的数字 <!DOCTYPE html> <html> <head> <meta charset=&quo ...

随机推荐

  1. ubuntu10.04 安装NVIDIA GT 420M驱动

    安装ubuntu已经好几天了,由于显卡驱动没装,屏幕在600X800下的效果很难看,于是就想办法,查阅资料终于安装成功了,下面将我的安装方法记录下来以供大家参考. 借鉴:ubuntu12.04下安装N ...

  2. mysql批量上传数据

    private object BlubckMysql(List<xiaoyao_blogs_pictureModel> list, string connect) { var sqllis ...

  3. 1)③爬取网易It方面部分新闻

    __author__ = 'minmin' #coding:utf-8 import re,urllib,sgmllib,os #根据当前的url获取html def getHtml(url): pa ...

  4. codeforces 416B. Appleman and Tree 树形dp

    题目链接 Fill a DP table such as the following bottom-up: DP[v][0] = the number of ways that the subtree ...

  5. python 字符串探讨

    本文内容基于python3 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出.字符串的学习是重点中的重点,这一节将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等.大部 ...

  6. [LeetCode]题解(python):143-Reorder List

    题目来源: https://leetcode.com/problems/reorder-list/ 题意分析: 给定一个链表L:L0→L1→…→Ln-1→Ln,改变链表的排序为: L0→Ln→L1→L ...

  7. python之单例设计模式

    设计模式之单例模式 单例设计模式是怎么来的?在面向对象的程序设计中,当业务并发量非常大时,那么就会出现重复创建相同的对象,每创建一个对象就会开辟一块内存空间,而这些对象其实是一模一样的,那么有没有办法 ...

  8. Python中的isinstance函数

    isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo)   如果参数object是classinfo的实例,或者object是class ...

  9. poj 1206

    /** 题意: 给定一序列,置换k次之后 输出其状态 置换: 考察循环节长度, 思路: 分别求出每个元素的循环节的大小,用k 模其大小,大的k次之后的位置, 输出即可 **/ #include < ...

  10. windows下Qt Creator5.1.0编写程序以及调用OpenCV库

    系统说明 最近使用opencv编写程序,程序编的差不多就学习使用QT加个界面,首先声明下本人的系统和使用的软件版本, 系统: windows xp QT IDE:QT Creator5.1.0 Ope ...