Задача: при помощи Tab можно выбирать нужный платёж и после выбора нажать Enter, чтобы этот платёж отметился в кнопке radio
Проблема 1. При навигации при помощи Tab отмечаются поочередно только 2 первых input, а потом отметка куда-то слетает и через клик по окну снова возвращается и выделяет input подчёркиванием.
Проблема 2. При выделении input предыдущие выделения должны пропадать, а они сохраняются.
Проблема 3. По нажатию на Enter input radio должен выделяться через checked
var one = document.getElementsByTagName('span');
var counter = 0;
document.addEventListener('keydown', function(event){
if(event.keyCode === 9) {
for(i=0; i < one.length; i++) {
one[counter].classList.add('active');
};
counter++;
}
});
.active {
border-bottom: 1px dotted #000;
}
span {
padding: 5px;
display: inline-block;
width: 150px;
}
Оплата наличными
Банковский перевод
Банковский перевод №2
Банковский перевод №3
Ответ
Ответы на проблемы:
1) Инпуты типа "radio" с одинаковым именем(name) воспринимаются как один элемент, и это стандарт. При tab будет перемещаться только на выбранный инпут или на первый, если выбранного нету. Для перемещения надо использовать стрелки.
2) Можно подчеркивание организовать только с помощью css. Это удобнее.
3) Инпут с типом радио выбирается при нажатии на пробел. Это стандарт.
Менять стандартное поведение не рекомендуется.
Пример кода выделения без использования javascript
input[type="radio"]:checked+span {
border-bottom: 1px dotted #000;
}
label {
padding: 5px;
display: inline-block;
width: 250px;
border-bottom: 1px dotted transparent;
}
Комментариев нет:
Отправить комментарий