Возможное решение, по-видимому, заключается в установке свойства tabindex
для элементов, для которых вы не хотите вкладку, ставить -1
.
<div>
<input type="button" value="tabbable one" />
<input type="button" value="tabbable two" />
</div>
<div>
<input type="button" value="not tabbable" tabindex="-1"/>
<input type="button" value="also not tabbable" tabindex="-1"/>
</div>
Хотя я не нашел этого ни в одной документации, похоже, что он работает во всех протестированных браузерах (FF 3.5, IE 6 & 7, Opera 9.64).
Другой подход был бы к blur()
, когда нежелательный элемент получает фокус:
<div>
<input type="button" value="tabbable one" />
<input type="button" value="tabbable two" />
</div>
<div>
<input type="button" value="not tabbable" onfocus="blur()"/>
<input type="button" value="also not tabbable" onfocus="blur()"/>
</div>
Недостаток этого подхода состоит в том, что как только вы нажмете на элемент «untabbable», ни один элемент не будет выбран, и следующая вкладка начнется с самого первого элемента. Это особенно сложно при переходе назад, что больше невозможно. Решением этой проблемы будет активная фокусировка на следующем правильном элементе:
<div>
<input id="firstTabbable" type="button" value="tabbable one" />
<input type="button" value="tabbable two" />
<input id="lastTabbable" type="button" value="tabbable three" />
</div>
<div>
<input type="button" value="not tabbable" onfocus="blur(); $('firstTabbable').focus();"/>
<input type="button" value="also not tabbable" onfocus="blur(); $('lastTabbable').focus();"/>
</div>
Однако, на мой взгляд, это слишком сложно.