// $('.inputw').on('keyup', function(event) {
("inputw");
obj.addEventListener("keydown",functon(event){
})
4 回答
stone310
TA贡献361条经验 获得超191个赞
这个写的问题挺多的,一些写错的都注释了,一个重要的错误如下:
先看这个JQ:$(this).prev('input').focus();这个意思是获取this的前一个并且标签名为<input>的同胞元素让它获取焦点;
再看这个JS:this.previousSbiling.focus();意思是获取this的前一个同胞元素(包括文本元素)并且让它获取焦点;
这两个明显不是一个意思;像这种JS写法,只有这么写才能获取到:
<input><this> //只能这么写 <input> //这么写会报错,因为这写会获取到文本元素 <this>
而JQ的写法以上两种都能获取;
所以用JS方法写,要让它判断前一个函数是否是<input>节点而不是文本节点;
var obj = document.getElementsByClassName("inputw")[0]; //Element加上s,这个获取的是个类数组,要加下标[0],如果有多个要绑定事件,则要遍历 obj.addEventListener("keydown", function (event) { //function写错了 var evt = event || window.event; if (this.value == "" && evt.keyCode == 8) { //value,不是val,val是JQ写法 var prev = this.previousSibling eleFocus(prev) } }) function eleFocus(a) { if ( a.nodeName=="INPUT") { //判断是否<input> 这里"INPUT"是大写 a.focus() } else { a = a.previousSibling eleFocus(a) //不是<input>时回调它本身 } }
MarlboroKay
TA贡献189条经验 获得超236个赞
首先,你的代码:
var obj=document.getElementByClassName("inputw");
貌似少了个s,我一般用的都是下面这种
var obj=document.getElementsByClassName("inputw");
其次,getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持。
你可以在 函数开头添加一条判断
if(!document.getElementsByClassName) return false;
如果函数直接退出,则说明不支持
getElementsByClassName()
希望能帮到你,望采纳!
添加回答
举报
0/150
提交
取消