safari下无法jquery 触发keydownn事件,求助

你若触发,我就处理——浅谈JavaScript的事件响应 - 程序员的那些事
你若触发,我就处理——浅谈JavaScript的事件响应
(点击上方公众号,可快速关注)英文:Christian Heilmann译者:Chajn Science链接:http://chajn.org/project/javascript-events-responding-user/每当猴子们问我JavaScript和DOM里啥东西最牛逼时,我都会一巴掌打回去:卧槽还用问么当然是事件响应了啊!没它你能有时间和我讨论这个?你早去工地搬砖去了好么!浏览器没有事件响应就没有行为交互,那简直就是一夜回到解放前的感觉啊。此外,以事件驱动使得功能解耦也是个相当高端大气的技巧了,嘛,以此为主的Node.js 现在可是风生水起的说。那现在我们就再抠抠事件监听的相关基础,让大家在心情愉悦的状态下获得更多的姿♂势。不过那些经常写&a href=”javascript:void(0)”&和在标签上写onclick=”foo()”的猴子们请自动回避,小心你看不懂又想不开,老衲徒增罪孽呀(偶八年前就解释了内联事件处理是自寻死路)。再唠叨两句:本文的代码内容只涉及到原生JavaScript,像JQuery,YUI或Dojo什么的所提供的事件处理这里就不加以赘述了。我希望大家能够明白,使用这些库只是为了方便,但我们却不能完全依赖它。了解基础与理解本质是非常重要的,这样你就可以在不能使用傻瓜库的情况下,依旧可以提供一个牛逼的解决方案。进化主义声明:这里我们使用的事件语法是“DOM Level 3 Events”规范定义的“addEventListener()。除了IE9以下版本以外的现代浏览器都支持。当然,我们可以使用JQuery,它会帮我解决这些浏览器兼容性的问题。但如果你还想让互联网可以良好发展和进化,你就应该立刻停止为兼容低级浏览器而再去写一坨屎一样的傻逼兼容代码。这条路虽然艰辛,但却无比正确。可以试着给你的产品进行功能降级,检测到是低级浏览器就不执行脚本,比如addEventListener()的DOMContentLoaded事件就能确保你的代码不在低级浏览器中运行,而页面可以将主体内容正常显示就OK的。在我们进入事件的细节之前先看几个牛逼的演示,它利用onscroll事件得到了一个很nice的效果:因为要招设计师,Wealthfront的工程师们开发了Z轴滚动平移效果。这也是Beercamp 2011 website的一部分。Wealthfront的博客有细节介绍。Stroll.js用的也是类似的手法,用户可以在滚动列表时看到很多种炫酷展现。jQuery Scroll Path是一个JQ插件,它的功能是当用户在页面内能够跟随着一条路径去动态浏览内容。以上所有都是基于浏览器的事件监听和处理功能,所以,让我们细细品味一下原汁原味的事件机制吧。基础问题:啥是事件?var log = document.getElementById('log'),&&&&i = '', &&&&out = [];for (i in window) {&&if ( /^on/.test(i)) { out[out.length] = i; }}log.innerHTML = out.join(', ');在浏览器中运行如上代码,亲们可以得到如下:onmouseenter, onmouseleave, onafterprint, onbeforeprint, onbeforeunload, onhashchange, onmessage, onoffline, ononline, onpopstate, onpagehide, onpageshow, onresize, onunload, ondevicemotion, ondeviceorientation, onabort, onblur, oncanplay, oncanplaythrough, onchange, onclick, oncontextmenu, ondblclick, ondrag, ondragend, ondragenter, ondragleave, ondragover, ondragstart, ondrop, ondurationchange, onemptied, onended, onerror, onfocus, oninput, oninvalid, onkeydown, onkeypress, onkeyup, onload, onloadeddata, onloadedmetadata, onloadstart, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onmozfullscreenchange, onmozfullscreenerror, onpause, onplay, onplaying, onprogress, onratechange, onreset, onscroll, onseeked, onseeking, onselect, onshow, onstalled, onsubmit, onsuspend, ontimeupdate, onvolumechange, onwaiting, oncopy, oncut, onpaste, onbeforescriptexecute, onafterscriptexecute一大坨事件就够你吃几天的了,用addEventListener()方法可以进行事件监听:element.addEventListener(event, handler, useCapture);举个例子来说:var a = document.querySelector('a'); // grab the first link in the documenta.addEventListener('click', ajaxloader, false);我们在一个element上加了个事件监听,就好像是在命令她,“你被客人摸了你就给我喊起来!” The ajaxloader()是监听事件的回调方法,就好像是,“你就在这儿给我盯着,妞要是喊了,你就过去给客人道歉!” 将第三个参数useCapture设置为false是为了表示这次是在事件冒泡阶段进行触发,而不是在事件捕获阶段。咳咳,这是一个漫长而艰巨的课题,你也可以看看Dev.Opera对capture的解释。哎呀反正不用管那么多啦,99.7434%的情况下设置useCapture为false准没错!其实它默认就是false,所以按理来说是可以不用填写的,但Opera这逗比例外…在事件被触发之时,回调方法会接收到一个事件对象。请试着在恰当的环境中运行如下代码,也可以直接点击这里测试这个例子,对象内的属性又够吃一盆的:var log = document.getElementById('log'),&&&&out = '';&document.addEventListener('click', logeventinfo, false);document.addEventListener('keypress', logeventinfo, false);&function logeventinfo (ev) {&&log.innerHTML = '';&&out = '&ul&';&&for (var i in ev) {&&&&if (typeof ev[i] === 'function' || i === i.toUpperCase()) {&&&&&&continue;&&&&}&&&&out += '&li&&span&'+i+'&/span&: '+ev[i]+'&/li&';&&}&&log.innerHTML += out + '&/ul&';}你可以对同一事件进行多重监听,也可以对多个事件使用同一方法处理(如本例)。参数ev是传回来的事件对象,下面是它所带的全部属性:originalTarget: [object HTMLHtmlElement]type: clicktarget: [object HTMLHtmlElement]currentTarget: [object HTMLDocument]eventPhase: 3bubbles: truecancelable: truetimeStamp: defaultPrevented: falsewhich: 1rangeParent: [object Text]rangeOffset: 23pageX: 182pageY: 111isChar: falsescreenX: 1016screenY: 572clientX: 182clientY: 111ctrlKey: falseshiftKey: falsealtKey: falsemetaKey: falsebutton: 0relatedTarget: nullmozPressure: 0mozInputSource: 1view: [object Window]detail: 1layerX: 182layerY: 111cancelBubble: falseexplicitOriginalTarget: [object HTMLHtmlElement]isTrusted: trueoriginalTarget: [object HTMLHeadingElement]type: clicktarget: [object HTMLHeadingElement]currentTarget: [object HTMLDocument]eventPhase: 3bubbles: truecancelable: truetimeStamp: defaultPrevented: falsewhich: 1rangeParent: [object Text]rangeOffset: 0pageX: 1pageY: 18isChar: falsescreenX: 835screenY: 479clientX: 1clientY: 18ctrlKey: falseshiftKey: falsealtKey: falsemetaKey: falsebutton: 0relatedTarget: nullmozPressure: 0mozInputSource: 1view: [object Window]detail: 1layerX: 1layerY: 18cancelBubble: falseexplicitOriginalTarget: [object Text]isTrusted: true试一下本例中点击鼠标和按键盘,不同的事件触发传回来的结果是不同的。可以看看完整的标准事件属性列表。知晓基础之后:阻止事件默认行为的执行和获得触发事件的目标元素我们需要了解浏览器中关于事件对象有两个很重要的功能。阻止浏览器执行事件默认行为的ev.preventDefault(),和可以获得事件目标元素的ev.target.比如说一个链接被点击了,但因为业务需要,我们并不想让浏览器打开新页面。这时候可以给这个链接加个点击事件监听,然后在回调函数中调用 preventDefault()方法即可。昂,就如下面这个例子,请看HTML:&a class=&prevent& href=&&&Smashing, my dear!&/a&&a class=&normal& href=&&&Smashing, my dear!&/a&还有JavaScript:var normal = document.querySelector('.normal'),&&&&prevent = document.querySelector('.prevent');&prevent.addEventListener('click', function(ev) {&&alert('fabulous, really!');&&ev.preventDefault();}, false);&normal.addEventListener('click', function(ev) {&&alert('fabulous, really!');}, false);注意: document.querySelector() 是合理获取DOM元素的一种方式。和jQuery的 $() 差不多。 可以读读 W3C’s specification 和MDN的 explanatory code snippets 去了解。如果点击.prevent链接,会弹出个对话框,点“确定”后啥事都没发生,呵~呵~,因为处理中有执行ev.preventDefault(),所以不会跳到 。没有 preventDefault()的就会在弹对话框,且跳链接咯。不信你可以试一下嘛。通常情况下,处理事件的方法想要访问触发元素只能通过变量和this什么的去关联,虽然看似简单方便,但addEventListener()给了我们更好的选择:事件目标(target),不过它可能被其他的一些东西混淆,所以用ev.currentTarget更保险些。通常想要在点击、悬停或输入事件的回调方法中访问触发元素都是用变量 this 。虽然方便,但这个关键字你懂得…于是 addEventListener() 提供给我们一个更好的获取方式:event.target。 不过它可能会被混淆( this 被绑到奇怪的东西上的时候),所以用 ev.currentTarget 更保险些。事件代理:高端,大气,上档次!用事件对象的 target 属性,你可以得到触发事件的元素。事件被激活后,会像猴子一样沿着DOM树从监听节点下滑到触发节点,然后再上爬回监听节点。也就是说,如果你监听了一个DOM节点,那也就等于你监听了其所有的后代节点。代理的意思就是只监听父节点的事件触发,以来代理对其后代节点的监听,而你需要做的只是通过 target 属性得到触发元素并作出回应。来看我下面的例子:&ul id=&resources&&&&&li&&a href=&http://developer.mozilla.org&&MDN&/a&&/li&&&&li&&a href=&&&HTML5 Doctor&/a&&/li&&&&li&&a href=&&&HTML5 Rocks&/a&&/li&&&&li&&a href=&/&&Expressive Web&/a&&/li&&&&li&&a href=&/&&CreativeJS&/a&&/li&&/ul&这个例子中的HTML结构是个无序列表,当鼠标悬停会显示相应的标签信息。下面是它JS代码,你将看到它只用到了一个事件监听,然后在处理函数中得到target,以它的 tagName 来进行区分。var resources = document.querySelector('#resources'),&&&&log = document.querySelector('#log');&resources.addEventListener('mouseover', showtarget, false);&function showtarget(ev) {&&var target = ev.target;&&if (target.tagName === 'A') {&&&&log.innerHTML = 'A link, with the href:' + target.href;&&}&&if (target.tagName === 'LI') {&&&&log.innerHTML = 'A list item';&&}&&if (target.tagName === 'UL') {&&&&log.innerHTML = 'The list itself';&&}}我费事吧啦解释了半天,乃们懂得这么做意味着什么么?这意味着你可以节省大量重复的事件监听,以减少浏览器资源消耗。大多数人可能会用jQuery的$(‘a’).click(…) 啥啥啥的(虽然 jQuery的 on 方法优化的还OK啦不过偶还是蛮鄙视他的),这么做看似一句话蛮带感的,可其实它是把获取到的所有A元素一个一个的注册监听!然后在某个时刻,充斥着无数事件监听的页面终于觉累不爱,自爆以鸣冤屈。她还有一个好处就是让HTML独立起来,比如之后还有要加子元素的需求,也不需要再为其单独加事件监听了。事件监测,顺便说一下超级牛逼的CSS平滑效果以前我们会用mouseover|mouseout事件来暗挫挫的实现hover效果,而现在用CSS伪选择器的:hover和:focus什么的就直接搞定了。想到这里,内心止不住的伤感啊……魔法师们坚持住!咳咳,当然,CSS也并不是万能的,有些事情还是要跟事件配合完成,比如下面这个例子,对鼠标指针进行定位。这是相当简单的了是不,我们先搞个绝对定位的小球元素,下面是它的HTML:&div class=&plot&&&/div&这是它的CSS:.plot {&&position:absolute;&&background:rgb(175,50,50);&&width: 20px;&&height: 20px;&&border-radius: 20px;&&display: block;&&top:0;&&left:0;}我们监听并处理doucment的click事件,利用PageX和pageY对小球进行定位。注意啊这里,我们需要减去球的半径,以让球的中心在鼠标指针上:var plot = document.querySelector('.plot'),&&&&offset = plot.offsetWidth / 2;document.addEventListener('click', function(ev) {&&plot.style.left = (ev.pageX - offset) + 'px';&&plot.style.top = (ev.pageY - offset) + 'px';}, false);随便点击屏幕的任意位置,小球都会随之闪现到那。不过它并不是平滑过去的,但如果你勾选这个示例的复选框,你会发现小球就会很圆润的滑过来了。这个效果呢,过去的话可能只能用JS库来完成,但现在啊,时代不同了……我们只需要用CSS写个过渡效果的类,而剩下的事情就让浏览器去处理。为至于此,我们写个类名为smooth的样式,在复选框被选中之后,将其应用到小球上:.smooth {&&-webkit-transition: 0.5s;&&&& -moz-transition: 0.5s;&&&&&&-ms-transition: 0.5s;&&&&&& -o-transition: 0.5s;&&&&&&&&&&transition: 0.5s;}添加JavaScript:var cb = document.querySelector('input[type=checkbox]');cb.addEventListener('click', function(ev) {&&plot.classList.toggle('smooth');}, false);随着新世界的来临,CSS和JavaScript双剑合璧,谁与争锋!嘛顺便说下,在JS中也有跟CSS过渡和动画效果有关的事件噢。撸一个键需要多长时间?正如你之前在可用事件列表中看到的,我们也可以监听按键输入事件。不过很遗憾的是,浏览器对键盘事件处理的并不是很到位,你可以看看Jan Wolter对此的详细解释接下来让我们看一个keytime的例子,它会输出用户按键的毫秒间隔。代码并不难:var resources = document.querySelector('#resources'),&&&&log = document.querySelector('#log'),&&&&time = 0;&document.addEventListener('keydown', keydown, false);document.addEventListener('keyup', keyup, false);&function keydown(ev) {&&if (time === 0) { &&&&time = ev.timeStamp; &&&&log.classList.add('animate');&&}}function keyup(ev) {&&if (time !== 0) {&&&&log.innerHTML = ev.timeStamp - time;&&&&time = 0;&&&&log.classList.remove('animate');&&}}先定义我们想要操纵的元素并设置time为0。然后我们在document上监听两个键盘输入事件 keydown和keyup。在keydown事件处理中,我们检查变量time是否为0,如果是则把事件对象的timeStamp赋值给time。再加个CSS动画类animate给log节点,让它向滚动条一样动起来在keyup事件处理中,如果time还是为0则忽略(在按着键盘的期间keydown事件是连续不断被触发的),如果不是则通过两者时间戳相减去计算一次按键操作经过多长时间。最后让time为0并移除log节点的animate类弄个CSS过渡(动画)效果当浏览器运行CSS过渡效果是会在JavaScript中触发一个独立事件,叫transitionend。这个事件对象会有两个属性:被其所影响到的属性名propertyName,和其过渡所经历的时间elapsedTime。可以查看这个demo感受一下,代码很简单,下面是它的CSS:.plot {&&background:rgb(175,50,50);&&width: 20px;&&height: 20px;&&border-radius: 20px;&&display: block;&&-webkit-transition: 0.5s;&&&& -moz-transition: 0.5s;&&&&&&-ms-transition: 0.5s;&&&&&& -o-transition: 0.5s;&&&&&&&&&&transition: 0.5s;}&.plot:hover {&&width: 50px;&&height: 50px;&&border-radius: 100px;&&background: blue;}这是它的JavaScript:plot.addEventListener('transitionend', function(ev) {&&log.innerHTML += ev.propertyName + ':' + ev.elapsedTime + 's ';}, false);但因为Fire/Chrome/Safari/Opera等这些浏览器厂商各自为政,也是因为这些事件还不成熟,所以这些事件名通常都会被加上前缀,那在使用时你就不得不判断下浏览器兼容性。可以看看这个David Calhoun’s gist。CSS动画事件和上面演示的过渡事件基本一个意思,它有三个事件:animationstart,animationend和animationiteration。可以看MDN的demo。速度,距离和角度,没有问题!事件我们是监听到了,但如果想让它更加屌炸天,我们就需要再来点有深度的,比如在用户在拖拽元素时,给元素来个计算角度、距离和速度差什么的——示例。var plot = document.querySelector('.plot'),&&&&log = document.querySelector('output'),&&&&offset = plot.offsetWidth / 2,&&&&pressed = false,&&&&start = 0, x = 0, y = 0, end = 0, ex = 0, ey = 0, mx = 0, my = 0, &&&&duration = 0, dist = 0, angle = 0;&document.addEventListener('mousedown', onmousedown, false);document.addEventListener('mouseup', onmouseup, false);document.addEventListener('mousemove', onmousemove, false);&function onmousedown(ev) {&&if (start === 0 && x === 0 && y === 0) {&&&&start = ev.timeStamp;&&&&x = ev.clientX;&&&&y = ev.clientY;&&&&moveplot(x, y);&&&&pressed = true;&&}}function onmouseup(ev) {&&end = ev.timeStamp;&&duration = end - start;&&ex = ev.clientX;&&ey = ev.clientY;&&mx = ex - x;&&my = ey - y;&&dist = Math.sqrt(mx * mx + my * my);&&start = x = y = 0;&&pressed = false;&&angle = Math.atan2( my, mx ) * 180 / Math.PI;&&log.innerHTML = '&strong&' + (dist&&0) +'&/strong& pixels in &strong&'+&&&&&&&&&&&&&&&&&&duration +'&/strong& ms ( &strong&' +&&&&&&&&&&&&&&&&&&twofloat(dist/duration) +'&/strong& pixels/ms)'+&&&&&&&&&&&&&&&&&&' at &strong&' + twofloat(angle) +&&&&&&&&&&&&&&&&&&'&/strong& degrees';}function onmousemove (ev) {&&if (pressed) {&&&&moveplot(ev.pageX, ev.pageY);&&}}function twofloat(val) {&&return Math.round((val*100))/100;}function moveplot(x, y) {&&plot.style.left = (x - offset) + 'px';&&plot.style.top = (y - offset) + 'px';}好啦,好像做了很多事情的样子,但事实上并没有那么复杂。监听onmousedown和onmouseup两个事件,我们能得到鼠标当前位置clientX和clientY,还有记录按键时间的timeStamp。当鼠标移动时,检查鼠标是否被按下了(通过在mousedown时设定的布尔值),如果按下了则让小球跟着鼠标移动。然后是几何——Pythagoras(毕达哥拉斯定理)通过mousedown和mouseup的时间间隔和像素位移而得出它运动的速度。我们得到了运动开始和结束的xy坐标,相减得到距离差,再平方相加,最后得到和的平方根,即为小球运动的位移。嘛我们还通过计算三角形的反正切得到了它运动前后的偏转角度,高端吧!嘿嘿其实这些都是抄“A Quick Look Into the Math of Animations With JavaScript”的……你可以看下这个在JSFiddle上的示例:http://jsfiddle.net/codepo8/bAwUf/light/媒体事件video和audio这俩很潮的玩意也有一大堆事件供我们使用。比如有趣的time事件,它可以告诉我们这首歌或电影的已播放时长。可以看看MDN这个MGM-inspired dinosaur animation;我也没事闲的录制了一个six-minute screencast来玩弄了一下~。想看所有的事件动作?去JPlayer看媒体事件的演示页面吧。其他输入相关我们知道,浏览器提供了与鼠标键盘的交互,但这还远远不够满足我们更多的硬件交互需求。比如检测手机或平板电脑倾斜度的Device orientation和 touch events。the Gamepad API让我们可以在浏览器中做游戏控制;postMessage让我们可以在浏览器各窗口之间进行跨域消息传递;pageVisibility让我们可以得知浏览器中当前标签页可见状态。甚至当window的history对象有操作时也能监听的到。查看window对象的事件列表,有的可能已经被实现了,还有更多的在谋划中……嘛,不管浏览器是否会支持,最终都是要支持的嘛,这些是刚需。我们只要默默等待就可以了,骚年,向着夕阳奔跑吧!=v=玩出个未来基本上就这样了,看,事件并不难。一般情况下,你只需要注册监听他们,然后在事件处理函数中使用event对象就好了。如果到现在你还没想到它能做些什么有趣的事情,那这篇文章也只能帮你倒这里了。别再管上文的那些例子了,请你用你那上锈的脑袋好好思考下,玩愤怒小鸟时候,不就是监听个触摸事件的开始与结束,再处理下相应的方向和距离差所得出的射击力量么?最后嗖的一声,小鸟就自由飞翔在远方了~。所以,究竟是什么阻止了你的创意?该加了个油了,同学。【今日微信公号推荐↓】更多推荐请看《》其中推荐了包括技术、设计、极客&和&IT相亲相关的热门公众号。技术涵盖:Python、Web前端、Java、安卓、iOS、PHP、C/C++、.NET、Linux、数据库、运维、大数据、算法、IT职场等。点击《》,发现精彩!点击阅读原文,了解野狗
最有影响力的程序员自媒体,关注程序员相关话题:IT技术、IT职场、在线课程、学习资源等.
程序员的那些事的二维码
微信扫一扫
程序员的那些事的其他文章
广告一下^_^键盘事件keydown、keypress、keyup随笔整理总结_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
键盘事件keydown、keypress、keyup随笔整理总结
上传于||暂无简介
大小:7.25KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_081069',
blogTitle:'通过事件处理改变文档的行为',
blogAbstract:'事件处理可能是JavaScript提供给以用户界面为中心的开发人员最好的东西了。它也是最容易搞混的一个JavaScript主题,并不是因为它复杂,而是因为不同的浏览器实现事件处理的方式不同。我会很快给你解释事件是什么;展示一个成熟的、好用的处理事件的方法;接下来会讲一个W3C推荐的新方法。最后,你会学到如何调整与W3C兼容的方法,让不支持它的浏览器也可以理解你的脚本。\r\n事件可以是各种各样的事情,例如:\r\nl&&& 初始化的加载和网页文档的呈现;\r\nl&&& 图片的加载;\r\n',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:2,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}当前位置:&&
jquery.hotkeys监听键盘按下事件keydown插件
&&&&来源:&互联网& 发布时间:
jquery.hotkeys文件下载:
http://xiazai./201405/yuanma/jquery_hotkeys().rar
参照了一下它的文档用法,我们可以这样使用:
&script src="jquery-1.4.1.min.js" type="text/javascript"&&/script&
&script src="jquery.hotkeys.js" type="text/javascript"&&/script&
&script type="text/javascript"&
$(function () {
$(document).bind("keydown", "esc", function (ev) { alert("您按下了Esc键!"); //其它处理事件; })
.bind("keydown", "1", function (er) { alert("您按下了1键!"); })
.bind("keydown", "2", function (er) { alert("您按下了2键!"); })
.bind("keydown", "3", function (er) { alert("您按下了3键!"); })
.bind("keydown", "4", function (er) { alert("您按下了4键!"); })
下面是全部按键组合
&script src="jquery.hotkeys.js"&&/script&
//This page is a result of an autogenerated content made by running test.html with firefox.
function domo(){
jQuery('#platform-details').html('&code&' + navigator.userAgent + '&/code&');
jQuery(document).bind('keydown', 'esc',function (evt){jQuery('#_esc').addClass('dirty'); });
jQuery(document).bind('keydown', 'tab',function (evt){jQuery('#_tab').addClass('dirty'); });
jQuery(document).bind('keydown', 'space',function (evt){jQuery('#_space').addClass('dirty'); });
jQuery(document).bind('keydown', 'return',function (evt){jQuery('#_return').addClass('dirty'); });
jQuery(document).bind('keydown', 'backspace',function (evt){jQuery('#_backspace').addClass('dirty'); });
jQuery(document).bind('keydown', 'scroll',function (evt){jQuery('#_scroll').addClass('dirty'); });
jQuery(document).bind('keydown', 'capslock',function (evt){jQuery('#_capslock').addClass('dirty'); });
jQuery(document).bind('keydown', 'numlock',function (evt){jQuery('#_numlock').addClass('dirty'); });
jQuery(document).bind('keydown', 'pause',function (evt){jQuery('#_pause').addClass('dirty'); });
jQuery(document).bind('keydown', 'insert',function (evt){jQuery('#_insert').addClass('dirty'); });
jQuery(document).bind('keydown', 'home',function (evt){jQuery('#_home').addClass('dirty'); });
jQuery(document).bind('keydown', 'del',function (evt){jQuery('#_del').addClass('dirty'); });
jQuery(document).bind('keydown', 'end',function (evt){jQuery('#_end').addClass('dirty'); });
jQuery(document).bind('keydown', 'pageup',function (evt){jQuery('#_pageup').addClass('dirty'); });
jQuery(document).bind('keydown', 'pagedown',function (evt){jQuery('#_pagedown').addClass('dirty'); });
jQuery(document).bind('keydown', 'left',function (evt){jQuery('#_left').addClass('dirty'); });
jQuery(document).bind('keydown', 'up',function (evt){jQuery('#_up').addClass('dirty'); });
jQuery(document).bind('keydown', 'right',function (evt){jQuery('#_right').addClass('dirty'); });
jQuery(document).bind('keydown', 'down',function (evt){jQuery('#_down').addClass('dirty'); });
jQuery(document).bind('keydown', 'f1',function (evt){jQuery('#_f1').addClass('dirty'); });
jQuery(document).bind('keydown', 'f2',function (evt){jQuery('#_f2').addClass('dirty'); });
jQuery(document).bind('keydown', 'f3',function (evt){jQuery('#_f3').addClass('dirty'); });
jQuery(document).bind('keydown', 'f4',function (evt){jQuery('#_f4').addClass('dirty'); });
jQuery(document).bind('keydown', 'f5',function (evt){jQuery('#_f5').addClass('dirty'); });
jQuery(document).bind('keydown', 'f6',function (evt){jQuery('#_f6').addClass('dirty'); });
jQuery(document).bind('keydown', 'f7',function (evt){jQuery('#_f7').addClass('dirty'); });
jQuery(document).bind('keydown', 'f8',function (evt){jQuery('#_f8').addClass('dirty'); });
jQuery(document).bind('keydown', 'f9',function (evt){jQuery('#_f9').addClass('dirty'); });
jQuery(document).bind('keydown', 'f10',function (evt){jQuery('#_f10').addClass('dirty'); });
jQuery(document).bind('keydown', 'f11',function (evt){jQuery('#_f11').addClass('dirty'); });
jQuery(document).bind('keydown', 'f12',function (evt){jQuery('#_f12').addClass('dirty'); });
jQuery(document).bind('keydown', '1',function (evt){jQuery('#_1').addClass('dirty'); });
jQuery(document).bind('keydown', '2',function (evt){jQuery('#_2').addClass('dirty'); });
jQuery(document).bind('keydown', '3',function (evt){jQuery('#_3').addClass('dirty'); });
jQuery(document).bind('keydown', '4',function (evt){jQuery('#_4').addClass('dirty'); });
jQuery(document).bind('keydown', '5',function (evt){jQuery('#_5').addClass('dirty'); });
jQuery(document).bind('keydown', '6',function (evt){jQuery('#_6').addClass('dirty'); });
jQuery(document).bind('keydown', '7',function (evt){jQuery('#_7').addClass('dirty'); });
jQuery(document).bind('keydown', '8',function (evt){jQuery('#_8').addClass('dirty'); });
jQuery(document).bind('keydown', '9',function (evt){jQuery('#_9').addClass('dirty'); });
jQuery(document).bind('keydown', '0',function (evt){jQuery('#_0').addClass('dirty'); });
jQuery(document).bind('keydown', 'a',function (evt){jQuery('#_a').addClass('dirty'); });
jQuery(document).bind('keydown', 'b',function (evt){jQuery('#_b').addClass('dirty'); });
jQuery(document).bind('keydown', 'c',function (evt){jQuery('#_c').addClass('dirty'); });
jQuery(document).bind('keydown', 'd',function (evt){jQuery('#_d').addClass('dirty'); });
jQuery(document).bind('keydown', 'e',function (evt){jQuery('#_e').addClass('dirty'); });
jQuery(document).bind('keydown', 'f',function (evt){jQuery('#_f').addClass('dirty'); });
jQuery(document).bind('keydown', 'g',function (evt){jQuery('#_g').addClass('dirty'); });
jQuery(document).bind('keydown', 'h',function (evt){jQuery('#_h').addClass('dirty'); });
jQuery(document).bind('keydown', 'i',function (evt){jQuery('#_i').addClass('dirty'); });
jQuery(document).bind('keydown', 'j',function (evt){jQuery('#_j').addClass('dirty'); });
jQuery(document).bind('keydown', 'k',function (evt){jQuery('#_k').addClass('dirty'); });
jQuery(document).bind('keydown', 'l',function (evt){jQuery('#_l').addClass('dirty'); });
jQuery(document).bind('keydown', 'm',function (evt){jQuery('#_m').addClass('dirty'); });
jQuery(document).bind('keydown', 'n',function (evt){jQuery('#_n').addClass('dirty'); });
jQuery(document).bind('keydown', 'o',function (evt){jQuery('#_o').addClass('dirty'); });
jQuery(document).bind('keydown', 'p',function (evt){jQuery('#_p').addClass('dirty'); });
jQuery(document).bind('keydown', 'q',function (evt){jQuery('#_q').addClass('dirty'); });
jQuery(document).bind('keydown', 'r',function (evt){jQuery('#_r').addClass('dirty'); });
jQuery(document).bind('keydown', 's',function (evt){jQuery('#_s').addClass('dirty'); });
jQuery(document).bind('keydown', 't',function (evt){jQuery('#_t').addClass('dirty'); });
jQuery(document).bind('keydown', 'u',function (evt){jQuery('#_u').addClass('dirty'); });
jQuery(document).bind('keydown', 'v',function (evt){jQuery('#_v').addClass('dirty'); });
jQuery(document).bind('keydown', 'w',function (evt){jQuery('#_w').addClass('dirty'); });
jQuery(document).bind('keydown', 'x',function (evt){jQuery('#_x').addClass('dirty'); });
jQuery(document).bind('keydown', 'y',function (evt){jQuery('#_y').addClass('dirty'); });
jQuery(document).bind('keydown', 'z',function (evt){jQuery('#_z').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+a',function (evt){jQuery('#_Ctrl_a').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+b',function (evt){jQuery('#_Ctrl_b').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+c',function (evt){jQuery('#_Ctrl_c').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+d',function (evt){jQuery('#_Ctrl_d').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+e',function (evt){jQuery('#_Ctrl_e').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f',function (evt){jQuery('#_Ctrl_f').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+g',function (evt){jQuery('#_Ctrl_g').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+h',function (evt){jQuery('#_Ctrl_h').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+i',function (evt){jQuery('#_Ctrl_i').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+j',function (evt){jQuery('#_Ctrl_j').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+k',function (evt){jQuery('#_Ctrl_k').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+l',function (evt){jQuery('#_Ctrl_l').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+m',function (evt){jQuery('#_Ctrl_m').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+n',function (evt){jQuery('#_Ctrl_n').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+o',function (evt){jQuery('#_Ctrl_o').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+p',function (evt){jQuery('#_Ctrl_p').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+q',function (evt){jQuery('#_Ctrl_q').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+r',function (evt){jQuery('#_Ctrl_r').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+s',function (evt){jQuery('#_Ctrl_s').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+t',function (evt){jQuery('#_Ctrl_t').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+u',function (evt){jQuery('#_Ctrl_u').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+v',function (evt){jQuery('#_Ctrl_v').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+w',function (evt){jQuery('#_Ctrl_w').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+x',function (evt){jQuery('#_Ctrl_x').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+y',function (evt){jQuery('#_Ctrl_y').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+z',function (evt){jQuery('#_Ctrl_z').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+a',function (evt){jQuery('#_Shift_a').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+b',function (evt){jQuery('#_Shift_b').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+c',function (evt){jQuery('#_Shift_c').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+d',function (evt){jQuery('#_Shift_d').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+e',function (evt){jQuery('#_Shift_e').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f',function (evt){jQuery('#_Shift_f').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+g',function (evt){jQuery('#_Shift_g').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+h',function (evt){jQuery('#_Shift_h').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+i',function (evt){jQuery('#_Shift_i').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+j',function (evt){jQuery('#_Shift_j').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+k',function (evt){jQuery('#_Shift_k').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+l',function (evt){jQuery('#_Shift_l').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+m',function (evt){jQuery('#_Shift_m').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+n',function (evt){jQuery('#_Shift_n').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+o',function (evt){jQuery('#_Shift_o').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+p',function (evt){jQuery('#_Shift_p').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+q',function (evt){jQuery('#_Shift_q').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+r',function (evt){jQuery('#_Shift_r').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+s',function (evt){jQuery('#_Shift_s').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+t',function (evt){jQuery('#_Shift_t').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+u',function (evt){jQuery('#_Shift_u').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+v',function (evt){jQuery('#_Shift_v').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+w',function (evt){jQuery('#_Shift_w').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+x',function (evt){jQuery('#_Shift_x').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+y',function (evt){jQuery('#_Shift_y').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+z',function (evt){jQuery('#_Shift_z').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+a',function (evt){jQuery('#_Alt_a').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+b',function (evt){jQuery('#_Alt_b').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+c',function (evt){jQuery('#_Alt_c').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+d',function (evt){jQuery('#_Alt_d').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+e',function (evt){jQuery('#_Alt_e').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f',function (evt){jQuery('#_Alt_f').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+g',function (evt){jQuery('#_Alt_g').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+h',function (evt){jQuery('#_Alt_h').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+i',function (evt){jQuery('#_Alt_i').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+j',function (evt){jQuery('#_Alt_j').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+k',function (evt){jQuery('#_Alt_k').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+l',function (evt){jQuery('#_Alt_l').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+m',function (evt){jQuery('#_Alt_m').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+n',function (evt){jQuery('#_Alt_n').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+o',function (evt){jQuery('#_Alt_o').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+p',function (evt){jQuery('#_Alt_p').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+q',function (evt){jQuery('#_Alt_q').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+r',function (evt){jQuery('#_Alt_r').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+s',function (evt){jQuery('#_Alt_s').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+t',function (evt){jQuery('#_Alt_t').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+u',function (evt){jQuery('#_Alt_u').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+v',function (evt){jQuery('#_Alt_v').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+w',function (evt){jQuery('#_Alt_w').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+x',function (evt){jQuery('#_Alt_x').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+y',function (evt){jQuery('#_Alt_y').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+z',function (evt){jQuery('#_Alt_z').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+esc', function (evt){jQuery('#_Ctrl_esc').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+tab', function (evt){jQuery('#_Ctrl_tab').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+space', function (evt){jQuery('#_Ctrl_space').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+return', function (evt){jQuery('#_Ctrl_return').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+backspace', function (evt){jQuery('#_Ctrl_backspace').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+scroll', function (evt){jQuery('#_Ctrl_scroll').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+capslock', function (evt){jQuery('#_Ctrl_capslock').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+numlock', function (evt){jQuery('#_Ctrl_numlock').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+pause', function (evt){jQuery('#_Ctrl_pause').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+insert', function (evt){jQuery('#_Ctrl_insert').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+home', function (evt){jQuery('#_Ctrl_home').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+del', function (evt){jQuery('#_Ctrl_del').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+end', function (evt){jQuery('#_Ctrl_end').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+pageup', function (evt){jQuery('#_Ctrl_pageup').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+pagedown', function (evt){jQuery('#_Ctrl_pagedown').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+left', function (evt){jQuery('#_Ctrl_left').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+up', function (evt){jQuery('#_Ctrl_up').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+right', function (evt){jQuery('#_Ctrl_right').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+down', function (evt){jQuery('#_Ctrl_down').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f1', function (evt){jQuery('#_Ctrl_f1').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f2', function (evt){jQuery('#_Ctrl_f2').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f3', function (evt){jQuery('#_Ctrl_f3').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f4', function (evt){jQuery('#_Ctrl_f4').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f5', function (evt){jQuery('#_Ctrl_f5').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f6', function (evt){jQuery('#_Ctrl_f6').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f7', function (evt){jQuery('#_Ctrl_f7').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f8', function (evt){jQuery('#_Ctrl_f8').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f9', function (evt){jQuery('#_Ctrl_f9').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f10', function (evt){jQuery('#_Ctrl_f10').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f11', function (evt){jQuery('#_Ctrl_f11').addClass('dirty'); });
jQuery(document).bind('keydown', 'Ctrl+f12', function (evt){jQuery('#_Ctrl_f12').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+esc', function (evt){jQuery('#_Shift_esc').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+tab', function (evt){jQuery('#_Shift_tab').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+space', function (evt){jQuery('#_Shift_space').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+return', function (evt){jQuery('#_Shift_return').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+backspace', function (evt){jQuery('#_Shift_backspace').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+scroll', function (evt){jQuery('#_Shift_scroll').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+capslock', function (evt){jQuery('#_Shift_capslock').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+numlock', function (evt){jQuery('#_Shift_numlock').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+pause', function (evt){jQuery('#_Shift_pause').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+insert', function (evt){jQuery('#_Shift_insert').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+home', function (evt){jQuery('#_Shift_home').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+del', function (evt){jQuery('#_Shift_del').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+end', function (evt){jQuery('#_Shift_end').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+pageup', function (evt){jQuery('#_Shift_pageup').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+pagedown', function (evt){jQuery('#_Shift_pagedown').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+left', function (evt){jQuery('#_Shift_left').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+up', function (evt){jQuery('#_Shift_up').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+right', function (evt){jQuery('#_Shift_right').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+down', function (evt){jQuery('#_Shift_down').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f1', function (evt){jQuery('#_Shift_f1').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f2', function (evt){jQuery('#_Shift_f2').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f3', function (evt){jQuery('#_Shift_f3').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f4', function (evt){jQuery('#_Shift_f4').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f5', function (evt){jQuery('#_Shift_f5').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f6', function (evt){jQuery('#_Shift_f6').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f7', function (evt){jQuery('#_Shift_f7').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f8', function (evt){jQuery('#_Shift_f8').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f9', function (evt){jQuery('#_Shift_f9').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f10', function (evt){jQuery('#_Shift_f10').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f11', function (evt){jQuery('#_Shift_f11').addClass('dirty'); });
jQuery(document).bind('keydown', 'Shift+f12', function (evt){jQuery('#_Shift_f12').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+esc', function (evt){jQuery('#_Alt_esc').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+tab', function (evt){jQuery('#_Alt_tab').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+space', function (evt){jQuery('#_Alt_space').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+return', function (evt){jQuery('#_Alt_return').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+backspace', function (evt){jQuery('#_Alt_backspace').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+scroll', function (evt){jQuery('#_Alt_scroll').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+capslock', function (evt){jQuery('#_Alt_capslock').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+numlock', function (evt){jQuery('#_Alt_numlock').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+pause', function (evt){jQuery('#_Alt_pause').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+insert', function (evt){jQuery('#_Alt_insert').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+home', function (evt){jQuery('#_Alt_home').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+del', function (evt){jQuery('#_Alt_del').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+end', function (evt){jQuery('#_Alt_end').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+pageup', function (evt){jQuery('#_Alt_pageup').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+pagedown', function (evt){jQuery('#_Alt_pagedown').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+left', function (evt){jQuery('#_Alt_left').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+up', function (evt){jQuery('#_Alt_up').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+right', function (evt){jQuery('#_Alt_right').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+down', function (evt){jQuery('#_Alt_down').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f1', function (evt){jQuery('#_Alt_f1').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f2', function (evt){jQuery('#_Alt_f2').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f3', function (evt){jQuery('#_Alt_f3').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f4', function (evt){jQuery('#_Alt_f4').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f5', function (evt){jQuery('#_Alt_f5').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f6', function (evt){jQuery('#_Alt_f6').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f7', function (evt){jQuery('#_Alt_f7').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f8', function (evt){jQuery('#_Alt_f8').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f9', function (evt){jQuery('#_Alt_f9').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f10', function (evt){jQuery('#_Alt_f10').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f11', function (evt){jQuery('#_Alt_f11').addClass('dirty'); });
jQuery(document).bind('keydown', 'Alt+f12', function (evt){jQuery('#_Alt_f12').addClass('dirty'); });
jQuery(document).ready(domo);
相关技术文章: &&&&
接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE7, IE8, Firefox 3, Chrome 2 和 Safari 4测试通过。使用的开发工具是微软VS2010+Jquery框架
实现步骤如下
1、首先引用Jquery类库
&script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"&&/script&
2、Javascript代码
代码如下:&script type="text/javascript"&
$(function () {
$('input:text:first').focus();
var $inp = $('input:text');
$inp.bind('keydown', function (e) {
var key = ...... &&&&
键盘事件处理所有用户在键盘敲击的情况,不管在文本输入区域内部还是外部。键盘事件在不同的浏览器中作用的范围是不一样的,通常这种键盘事件可以作用于 Form元素,a标签元素,window ,document这样的元素上。在所有可以获得交点的元素上是可以触发键盘事件的,可以获得焦点的元素可以这样理解,在使用Tab键的时候可以跳跃到的元素就是可以使用键盘事件的元(在没有为这些元素设置tabindex属性值的情况下,当tabindex设置为负数的时候,在使用Tab键的时候就不会获得焦点)。
键盘事件可以传递一个参数event,其实所有的jQuery事件都可以传递这么一...... &&&&
其实主要是通过window.orientation实现,下面看下代码吧
代码如下:function orient() {if (window.orientation == 90 || window.orientation == -90) {//ipad、iphone竖屏;Andriod横屏$("body").attr("class", "landscape");orientation = 'landscape';}else if (window.orientation == 0 || window.orientation == 180) {//ipad、iphone横屏;Andriod竖屏$("body").attr("class", "portrait");orientation = 'portrait';}}//页面加载时调用$(function(){orient();});//用户变化屏幕方向时调用$(window).bind( 'orientationchange',......&nbsp最新技术文章: &&&&
强制不换行,直接使用white-space:nowrap即可。CSS设置不转行: overflow:hidden 隐藏 white-space:normal 默认 pre 换行和其他空白字符都将受到保护 nowrap 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象例:强制不换行 代码如下: div{white-space:}
...... &&&&
某个元素设置无边框,只需要给元素设置border:none即可,当然设置border:0效果一样,但实际上两者是有性能差别的 代码如下:border:none:边框设置为为none,不做任何处理;border:0:边框宽度设置为0像素,但是实际上border-color和border-style还是在渲染的。然而在IE中,对于button和input元素确并不是这样,在IE6,7中border:none仅等价于border-style:none,而边框所占的空间还是在的。这导致了调input的宽度和高度在各个浏览器中不统一!在IE6,7中,虽然设置了border:none后,边框仍存在。不信你试一试。下面给...... &&&&
一、border:noneborder-style的简写在chrome审查元素看到以下结果 代码如下:element.style {border:border-top-style:border-right-style:border-bottom-style:border-left-style:border-width:border-color:}在firefox中用firebug查看元素会看到以下结果: 代码如下:element.style {
border:}注意这个medium值二、border:0border-width的简写在chrome审查元素看到以下结果......&nbsp
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!
(C)2012-,站长邮箱:www_169it_(请将#改为@)

我要回帖

更多关于 jquery keydown事件 的文章

 

随机推荐