为什么这个写法触发不了javascript的键盘事件?
如题,为什么把keydown换成click又能有输出呢? function addEnterEvent(element, listener) { addEvent(element, "keydown", function(event){ //我把keydown换成click可以,可是keydown,keyup触发不了? var event = event ? event : window.event; console.log(event.type) console.log(event.keyCode) if (event.keyCode == 13) { //enter健 console.log("22"); clicklistener(); //一个处理函数而已,跟click还是enter没关系 } }); } addEnterEvent($("#doma"), clicklistener()); //$("#doma")自己的封装,获开id为doma的div |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
开始还以为$("#doma")是jQuery,然后测试半天。。发现jq没有addeventlistener..
因为 获开keydown的时候 需要有个焦点吧 .. 但是div本身不能获得焦点
<div id="doma" tabindex="1">
这样就可以了 ... 给div设置个tabindex 让他强行获得焦点。。
当然这样体验是很糟糕了..
一般这种keydown事件给document 或者 input 比较好啦 。 |
|
|
|
|
因为某些不能focus的元素不支持这个方法,如果真的需要的话可以在document上面绑keydown |
|
|
|
|
functionaddEvent(element,event,listener){ element.addEventListener(event,listener); }//下面是处理函数 functionclicklistener(event){ varevent=event?event:window.event; console.log(event.type); vardiv1=document.getElementById("doma"); div1.firstChild.nodeValue="加油!";} |
|
|
|
|
addEvent 把这个函数的封装的代码贴一下呗
不然我这边测试不了啊~ |
|
|
|
|