erutdioup8556
2016-09-20 09:17:34
// $('.inputw').on('keyup',?function(event)?{
("inputw");
obj.addEventListener("keydown",functon(event){
})
4 回答

stone310
TA貢獻(xiàn)361條經(jīng)驗(yàn) 獲得超191個贊
這個寫的問題挺多的,一些寫錯的都注釋了,一個重要的錯誤如下:
?先看這個JQ:$(this).prev('input').focus();這個意思是獲取this的前一個并且標(biāo)簽名為<input>的同胞元素讓它獲取焦點(diǎn);
再看這個JS:this.previousSbiling.focus();意思是獲取this的前一個同胞元素(包括文本元素)并且讓它獲取焦點(diǎn);
這兩個明顯不是一個意思;像這種JS寫法,只有這么寫才能獲取到:
<input><this>???//只能這么寫 <input>?????????//這么寫會報(bào)錯,因?yàn)檫@寫會獲取到文本元素 <this>
而JQ的寫法以上兩種都能獲??;
所以用JS方法寫,要讓它判斷前一個函數(shù)是否是<input>節(jié)點(diǎn)而不是文本節(jié)點(diǎn);
var?obj?=?document.getElementsByClassName("inputw")[0]; //Element加上s,這個獲取的是個類數(shù)組,要加下標(biāo)[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>時(shí)回調(diào)它本身 ????} }

MarlboroKay
TA貢獻(xiàn)189條經(jīng)驗(yàn) 獲得超236個贊
首先,你的代碼:
var?obj=document.getElementByClassName("inputw");
貌似少了個s,我一般用的都是下面這種
var?obj=document.getElementsByClassName("inputw");
其次,getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持。
你可以在 函數(shù)開頭添加一條判斷
if(!document.getElementsByClassName)?return?false;
如果函數(shù)直接退出,則說明不支持
getElementsByClassName()
希望能幫到你,望采納!
添加回答
舉報(bào)
0/150
提交
取消