Индекс вкладки на div
Пожалуйста, просмотрите форму HTML-кода ниже
<form method="post" action="register">
<div class="email">
Email <input type="text" tabindex="1" id="email" value="" name="email"> </div>
</div>
<div class="agreement">
<div tabindex="2" class="terms_radio">
<div onclick="changeTerm(this);" class="radio" id="terms_radio_wrapper" style="background-position: left 0pt;">
<input type="radio" id="terms" value="1" name="terms"><label for="terms">I have read and understood the</label>
</div>
</div>
</div>
<div class="form_submit">
<input type="button" tabindex="3" value="Cancel" name="cancel">
<input type="submit" tabindex="4" value="Submit" name="submit">
</div>
</form>
Здесь я установил флажок соглашения таким образом, что радиоввод полностью скрыт, а фоновое изображение будет применено к обертке div, а onclick обертки div переключит фоновое изображение, а также проверенное состояние радио вход.
Мне нужно установить индекс tabindex на "terms_radio" DIV, просто атрибут tabindex = "2" в div не работает,
Можно ли довести пунктирную рамку на метке для радиовхода вверх при нажатии TAB, когда курсор находится в поле ввода электронной почты?
Ответы
Ответ 1
Элементы DIV не совместимы с tabindex в HTML4).
( ПРИМЕЧАНИЕ HTML 5 spec делает разрешает это, однако, и обычно работает независимо)
Следующие элементы поддерживают атрибут tabindex: A, AREA, BUTTON, INPUT, OBJECT, SELECT и TEXTAREA.
По сути, все, что вы ожидаете, сможет удерживать фокус; элементы формы, ссылки и т.д.
Я думаю, что вы, вероятно, захотите сделать здесь, это использовать немного JS (я бы рекомендовал jQuery для чего-то относительно безболезненного) связать с событием фокуса на элементе ввода и установить границу родительского div.
Вставьте это в нижней части тега вашего тела, чтобы захватить jQuery из CDN Google:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
Тогда что-то вроде этого, вероятно, сделает трюк:
$(function() {
$('div.radio input').bind({
focus : function() {
$(this).closest('div.radio').css('border','1px dotted #000');
},
blur : function() {
$(this).closest('div.radio').css('border','none');
}
});
});
Ответ 2
Да! Для него есть спецификация, называемая WAI-ARIA и ее доступность: https://www.w3.org/TR/wai-aria-practices/#kbd_general_between
Ответ 3
Вы можете просто изменить значение tabindex от 2 до 0.
<div tabindex="0" class="terms_radio">
Это обеспечивает состояние фокусировки по умолчанию, которое идет с потоком вашего кода.
https://www.w3.org/WAI/PF/aria-practices/#focus_tabindex
Ответ 4
Вы можете поместить tabindex = "2" для радиоэлемента и скрыть элемент радио (не с дисплеем: none, а с z-index, чтобы он оставался tabbable). Когда вы нажимаете вкладку на поле ввода электронной почты, радио получает фокус, и вы можете использовать
input:focus+label {}
чтобы создать ярлык
Ответ 5
jSFiDDLE
$(document).ready(function() {
lastIndex = 0;
$(document).keydown(function(e) {
if (e.keyCode == 9) var thisTab = $(":focus").attr("tabindex");
if (e.keyCode == 9) {
if (e.shiftKey) {
//Focus previous input
if (thisTab == startIndex) {
$("#" + tabLimitInID).find('[tabindex=' + lastIndex + ']').focus();
return false;
}
} else {
if (thisTab == lastIndex) {
$("#" + tabLimitInID).find('[tabindex=' + startIndex + ']').focus();
return false;
}
}
}
});
var setTabindexLimit = function(x, fancyID) {
console.log(x);
startIndex = 1;
lastIndex = x;
tabLimitInID = fancyID;
$("#" + tabLimitInID).find('[tabindex=' + startIndex + ']').focus();
}
/*Taking last tabindex=10 */
setTabindexLimit(10, "Selector_With_Where_Tab_Index_You_Want");
});
setTabindexLimit() функция два атрибута 10, который является последним Tabindex в Div и Selector_With_Where_Tab_Index_You_Want - это класс или идентификатор div, в котором вы хотите Повтор tabindexto.