2013-07-08 41 views
0

請訪問此琴第一:http://jsfiddle.net/7Prys/的jQuery的onChange()得到另一個領域集中

我想,當用戶輸入的第一個字段(用戶只能輸入每場一個字符串),第二個得到集中在自動得到什麼,並且這繼續直到第四個輸入字段。有沒有一個快速的jQuery?而且當我刪除代碼時,先按下退格鍵將逐一聚焦。

下面是HTML:

<input type="text" maxlength="1" class="small" /> 
<input type="text" maxlength="1" class="small" /> 
<input type="text" maxlength="1" class="small" /> 
<input type="text" maxlength="1" class="small" /> 

和jQuery:

$(".small").onchange(function() { 
    $(this).next().find(".small").focusIn(); 
}); 
+0

請避免使現有答案失效或使其不完整的編輯。如果你需要更多的細節,考慮開一個新的問題。 –

回答

3

在這裏你去:

$(".small").on('keyup', function (e) { 
    if(e.keyCode == 8){ /* backspace */ 
     $(this).prev('.small').focus(); 
    }else{ 
     $(this).next('.small').focus(); 
    } 
}); 

小提琴:http://jsfiddle.net/7Prys/10/
當退格鍵以外的任何鍵被按下時,這將進入下一個輸入,並且當按下退格鍵時轉到上一個輸入。請注意,如果您想識別Delete鍵,則可以添加|| e.keyCode == 46 if語句。


有沒有這樣的事情 .onChange.focusIn.on可用於我的示例中的 keyup事件。另外, .find().next('.small')應該只是 .next('.small')

+1

對於它的價值,'.on'通常是更好的做法,因爲它與其他事件(例如'click',鼠標懸停「等。 – Mooseman

2

沒有這樣的事情作爲上改變事件。

There is a change您可以使用的事件。

+0

我已經嘗試過更改()不起作用 – Asif

+0

@ aks007沒有'focusIn'這樣的事情 – Neal

3

嘗試:

$(".small").keyup(function() { 
    $(this).next().focus(); 
}); 

jsFiddle example

的幾個注意事項。在jQuery中,您使用.change(),而不是.onchange()。其次,.find()通過後代元素進行搜索,所以它是你的例子,因爲他們是兄弟姐妹,它永遠不會找到正確的元素。

3

這裏有很多問題。

onchange應該是change,但只有當輸入失去焦點時纔會觸發,這不起作用。我建議使用.keyup

$(this).next()是輸入元素,所以$(this).next().find(".small")不會找到任何東西。你可以使用$(this).next(".small"),但是$(this).next()就足夠了。

http://jsfiddle.net/ExplosionPIlls/7Prys/6/

編輯:您可以檢查e.which == 8以確定是否按退格鍵,然後用.prev代替。

http://jsfiddle.net/ExplosionPIlls/7Prys/11/

5

這爲我工作:

$(".small").keyup(function (e) { 
    if(e.keyCode == 46 || e.keyCode == 8){ 
     $(this).prev('.small').focus(); 
    } 
    else { 
     $(this).next('.small').focus(); 
    } 
}); 

小提琴:http://jsfiddle.net/5Sv2f/

相關問題