Если вы не можете добавить идентификаторы к своим входам, вам нужно найти разные селекторы для этих атрибутов.
Возможно, у вас есть имя для этих тегов, если вы планируете отправить эти данные. Затем вы можете сопоставить следующий ввод по имени, используя следующий селектор:
$('input[name=nextInputName]')
В противном случае вы всегда можете найти следующий элемент, используя комбинацию вызовов методов children()
и parent()
, чтобы перейти от текущего входа к следующему.
Я лично считаю, что самым простым решением было бы назначить идентификаторы, даже в jQuery, если вы не можете сделать это в HTML: это облегчит автофокусировку.
var counter = 0;
$('input').each(function () {
if (!$(this).attr('id')) {
$(this).attr('id', 'autofocus' + counter);
counter += 1;
}
});
Вы можете изменить селектор, чтобы пропустить некоторые элементы, для которых вы не хотите иметь функцию автофокуса.
Затем вы можете даже записать автофокус в несколько строк:
$('input[id^=autofocus]').keyup(function () {
if ($(this).val().length === $(this).attr('maxlength')) {
var id = $(this).attr('id').match(/^autofocus(\d+)$/[1]);
var nextId = Number(id) + 1;
$('#autofocus' + nextId).focus()
}
});