Как пропустить элементы при табуляции без использования tabindex?

Есть ли хороший способ в обработчике javascript onfocus(), чтобы батут фокуса на следующий элемент в порядке табуляции, без необходимости вручную вводить идентификатор элемента, который должен быть следующим?

Я построил сборщик дат в Django/jQuery. Это строка редактирования, а затем значок календаря, который выдает календарь. Я хочу, чтобы можно было перейти от редактирования строки к следующему входу, пропуская ссылку на значок календаря. Я имею в виду, что это обобщенный виджет, поэтому я не могу жестко указать идентификатор того, что будет дальше, и вызвать .focus(). Я знаю, что могу настроить атрибуты tabindex на все, но это более ручное, чем хотелось бы. Кроме того, iirc, что не помешало бы ему сфокусироваться, оно просто поместило бы его в конец порядка вкладок.

Ответы

Ответ 1

Установите tabindex = "-1" для этого элемента управления, и браузер пропустит этот элемент управления из табуляции.

Ответ 2

Может быть:

$("#your-calendar-icon").focus(function() {
  $(this).trigger("blur");
);

Ответ 4

или

$("#your-calendar-icon").focus(function() {
    $(somethingElse).trigger("focus");
});

Ответ 5

Используйте div вокруг значка календаря вместо ссылки. Затем присоедините свои события календаря к div. По умолчанию div не будет табуляцией.

Ответ 6

Если это всегда будет вход после календаря, то почему бы и нет:

$('#your-calendar-icon').focus( function() {
  $(this).next('input').focus();
} );

Лично я бы сказал, что если это будет плагин, вы должны просто сделать следующий элемент параметром конфигурации, который имеет значение по умолчанию, и указать значение по умолчанию в документах.

Ответ 7

Как говорит @thetacom, вы можете просто использовать другой тип элемента, который не получает фокуса. Если вы все еще хотите сохранить некоторые из функций tab, вы можете попробовать SkipOnTab.

SkipOnTab: плагин jQuery, чтобы освободить выбранные поля формы из порядка прямой табуляции.

Просто добавьте data-skip-on-tab="true" к значку выбора даты (или другим элементам/контейнерам), которые вы хотите пропустить. Вы можете нажать кнопку, чтобы активировать выбор даты или вернуться с помощью shift - tab и использовать клавишу ввода.

Смотрите простую демонстрацию и демо-версия бизнес-примера.