Se podría utilizar el selector de jQuery UI :focusable
mediante la replicación de la clase como esta:.
$.extend($.expr[':'], {
focusable: function(element) {
var nodeName = element.nodeName.toLowerCase(),
tabIndex = $.attr(element, 'tabindex');
return (/input|select|textarea|button|object/.test(nodeName)
? !element.disabled
: 'a' == nodeName || 'area' == nodeName
? element.href || !isNaN(tabIndex)
: !isNaN(tabIndex))
// the element and all of its ancestors must be visible
// the browser may report that the area is hidden
&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
}
});
Entonces usted puede manejarlo así:
$(document).ready(function() {
$('input[type=text]').keydown(function() {
var $this = $(this),
$focusables = $(':focusable'),
current = $focusables.index(this),
$next;
if ($this.val().length == $this.attr('maxlength')) {
$next = $focusables.eq(current+1).length ?$focusables.eq(current+1) : $focusables.eq(0);
$next.focus();
}
});
});
Véase un ejemplo de trabajo aquí:
http://jsfiddle.net/kU6ZN/
Tiene varias respuestas que le dicen cómo puede hacerlo, pero ¿ha considerado que quizás no quiera hacerlo? Cambiar el enfoque automáticamente es un comportamiento inesperado y puede ser confuso y frustrante para los usuarios. Consulte http://uxexchange.com/questions/4303/auto-tabbing-on-form-fields para obtener más – Day