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)驗 獲得超191個贊
這個寫的問題挺多的,一些寫錯的都注釋了,一個重要的錯誤如下:
?先看這個JQ:$(this).prev('input').focus();這個意思是獲取this的前一個并且標(biāo)簽名為<input>的同胞元素讓它獲取焦點;
再看這個JS:this.previousSbiling.focus();意思是獲取this的前一個同胞元素(包括文本元素)并且讓它獲取焦點;
這兩個明顯不是一個意思;像這種JS寫法,只有這么寫才能獲取到:
<input><this>???//只能這么寫 <input>?????????//這么寫會報錯,因為這寫會獲取到文本元素 <this>
而JQ的寫法以上兩種都能獲??;
所以用JS方法寫,要讓它判斷前一個函數(shù)是否是<input>節(jié)點而不是文本節(jié)點;
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>時回調(diào)它本身
????}
}
MarlboroKay
TA貢獻(xiàn)189條經(jīng)驗 獲得超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()
希望能幫到你,望采納!
添加回答
舉報
0/150
提交
取消

