Proponuję ustawienie maxLength jak 1 do każdego pola tekstowego i przełączyć się na następny raz na val.length
i maxlength
to samo.
DEMO
$(".inputs").keyup(function() {
if (this.value.length == this.maxLength) {
$(this).next('.inputs').focus();
}
});
Edit: spędził trochę czasu na następujące (nie w pełni przetestowane, ale podstawowe badania działało w porządku)
1. Allowing just numeric chars
2. Allow some control like del, backspace, e.t.c
3. Backspace on empty textbox will move to prev textbox
4. charLimit var to dynamically decide how many char you want to restrict.
Kod:
$(function() {
var charLimit = 1;
$(".inputs").keydown(function(e) {
var keys = [8, 9, /*16, 17, 18,*/ 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];
if (e.which == 8 && this.value.length == 0) {
$(this).prev('.inputs').focus();
} else if ($.inArray(e.which, keys) >= 0) {
return true;
} else if (this.value.length >= charLimit) {
$(this).next('.inputs').focus();
return false;
} else if (e.shiftKey || e.which <= 48 || e.which >= 58) {
return false;
}
}).keyup (function() {
if (this.value.length >= charLimit) {
$(this).next('.inputs').focus();
return false;
}
});
});
DEMO
Zobacz ten post [1]: http://stackoverflow.com/questions/1232379/setting-the-focus-to-the-next-input-in-jquery – BinBin
Zobacz [zaktualizowany wpis] (http://stackoverflow.com/a/10539258/297641) dla niektórych nowych funkcji .. bardziej jak " autotab' [DEMO] (http://jsfiddle.net/skram/qygB2/4/) –