为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个写法触发不了javascript的键盘事件?

为什么这个写法触发不了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
查看完整描述

4 回答

已采纳
?
OlderSkee

TA贡献123条经验 获得超103个赞

开始还以为$("#doma")是jQuery,然后测试半天。。发现jq没有addeventlistener..

因为 获取keydown的时候 需要有个焦点吧 .. 但是div本身不能获得焦点

<div id="doma"  tabindex="1">

这样就可以了 ... 给div设置个tabindex  让他强行获得焦点。。

当然这样体验是很糟糕了.. 

一般这种keydown事件给document 或者 input 比较好啦 。

查看完整回答
1 反对 回复 2016-09-22
?
orionwei

TA贡献23条经验 获得超2个赞

因为某些不能focus的元素不支持这个方法,如果真的需要的话可以在document上面绑keydown

查看完整回答
反对 回复 2016-09-22
?
newsudhc3634140

TA贡献5条经验 获得超1个赞

function addEvent(element, event, listener) {
		    element.addEventListener(event,listener);
		}
//下面是处理函数	
function clicklistener(event) {
	var event = event ? event : window.event;
	console.log(event.type);
	var div1 = document.getElementById("doma");
	div1.firstChild.nodeValue = "加油!";
}


查看完整回答
反对 回复 2016-09-22
?
OlderSkee

TA贡献123条经验 获得超103个赞

addEvent 把这个函数的封装的代码贴一下呗

不然我这边测试不了啊~

查看完整回答
反对 回复 2016-09-22
  • 4 回答
  • 0 关注
  • 2005 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信