Bu bir çözümdür. Muhtemelen en iyi çözüm ama döngüsüne girdi yaş eski modül operatörünü kullanarak iş gibi görünüyor:
(function() {
var inputs = $("#userInformation input[type=text]"),
i = 0,
length = inputs.length;
inputs.keyup(function(e) {
if ($(this).val().length == $(this).attr('maxlength')) {
i = ++i % length;
inputs[i].focus();
}
});
}());
Örnek: http://jsfiddle.net/jonathon/DysJe/
Ben de girişler için selektör bir değişiklik yaptık. birthdate
alan kümesini seçmek yerine, formdaki tüm girdileri alıyorum. Bunları bir diziye yapıştırın ve onlara odaklanın. Herşeyi gizlediğim değişkenleri her şeyden uzak tutmak için her şeyi kendi kapamaya koydum.
Son girişe ulaştığında, yalnızca durur (maxlength
ayarlanmamışsa) veya odağı yeniden baştan döndürür. Dönmesini istemiyorsanız, modül operatörünü kaldırmanız yeterlidir.
Bir dezavantajı olsa var: kullanıcı ilk elemanın odaklanmak etmezse o zaman bu göz ardı eder ve sadece vs.
I ikinci, üçüncü, odaklanmak için devam Bu konuda biraz daha fazla yaptım ve diğer değişken ihtiyacını ortadan kaldırdı. Bu, bir sonraki uçta çalışmaz, en baştan belirlenir. Her input
, olay öğesinin sonraki öğeye i
numaralı öğeye değil, inputs
listesindeki bir sonraki öğeye odaklanmasına ayarlandı. vb üçüncü ilerleme edeceğiz ikincisi,
(function() {
var inputs = $("#userInformation input");
inputs.each(function(i, item) {
$(item).keyup(function() {
if ($(this).val().length == $(this).attr('maxlength') && inputs[i + 1]) {
inputs[i + 1].focus();
}
});
});
}());
http://jsfiddle.net/jonathon/TQzKS/
kullanıcı sekmeler Sen isteyebilirsiniz eğer yüzden yukarıdaki gibi değil döngüsü içinden ancak doğru hareket edecek Giriş öğeleriniz için tabIndexes
'u da ayarlayın. JQuery öğelerinin döndürdüğü sırayla% 100 değilim - DOM yapısına bağlı olabileceğini düşünüyorum. Siparişinizde alışılmadık bir şey varsa, .each
parçasını çalıştırmadan önce inputs
listesini sıralamak için öğenin tabIndex
değerini kullanabilirsiniz.
Evet ve her iki örnekte de keyup
olayını, yazmayı bitirdiğim anda hareket etmesini sağladım.
Daha önce bu konuya rastlamamıştım; ilginç bir soru (ve ** + 1 **) =) –
İlgi dışı, neden bir tuş işleyicisi içinde bir tuş işleyicisi atarsınız? – Jamiec
Bunu göz ardı etti. – jack