猿问

为什么这个写法触发不了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


newsudhc3634140
浏览 1994回答 4
4回答

OlderSkee

开始还以为$("#doma")是jQuery,然后测试半天。。发现jq没有addeventlistener..因为 获取keydown的时候 需要有个焦点吧 .. 但是div本身不能获得焦点<div id="doma"  tabindex="1">这样就可以了 ... 给div设置个tabindex  让他强行获得焦点。。当然这样体验是很糟糕了.. 一般这种keydown事件给document 或者 input 比较好啦 。

orionwei

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

newsudhc3634140

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 = "加油!"; }

OlderSkee

addEvent 把这个函数的封装的代码贴一下呗不然我这边测试不了啊~
随时随地看视频慕课网APP
我要回答