Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.12.2017, 21:37
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Как повесить focus на элемент внутри label?
Добрый день уважаемые. Подскажите, пожалуйста как повесить фокусировку на label, а точнее на элемент который находиться в середине него. Приведу пример
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	.bl_payment__label {
		position: relative;
		display: block;
		width: 100%;
		cursor: pointer;
	}
	.bl_payment__label:focus {
		color: #ffd608;
	}

	input {
		position: absolute;
		visibility: hidden;
	}

	.bl_payment__text {
		color: inherit;
		font-size: 16px;
	}

	.bl_payment__text {
		margin-left: 25px;
		color: #505050;
		font-size: 18px;
		position: relative;
		display: block;
		width: 100%;
	}
	.bl_payment__text:hover {
		color: #ffd608;
	}
	.bl_payment__text:focus {
		outline: none;
		color: #ffd608;
		text-decoration: underline;
	}

	.bl_payment__text:before {
		content: "";
		position: absolute;
		left: -25px;
		top: 8px;
		width: 11px;
		height: 11px;
		box-sizing: border-box;
		border: 1px solid #505050;
	}

	.bl_delivery__label input:checked + .bl_delivery__text,
	.bl_payment__label input:checked + .bl_payment__text {
		font-weight: bold;
		color: #ffd608;
	}
	.bl_delivery__label input:checked + .bl_delivery__text:after,
	.bl_payment__label input:checked + .bl_payment__text:after {
		content: "";
		position: absolute;
		left: -22px;
		top: 10px;
		width: 5px;
		height: 5px;
		background-color: #ffc808;
		box-sizing: border-box;
		z-index: 2;
	}
</style>
</head>
<body>
	<label class="bl_payment__label" tabindex="0">
		<input class="" type="radio" name="payment">
		<span class="bl_payment__text">Оплата наличными</span>
	</label>
	<label class="bl_payment__label" tabindex="0">
		<input class="" type="radio" name="payment">
		<span class="bl_payment__text">Банковский перевод</span>
	</label>
</body>
</html>


как сделать так что б по этим radio кнопкам можно было передвигаться через Tab ? (Допустим я хочу что б текст подсвечивался другим цветом и можно б было их активировать через Enter) ?

Последний раз редактировалось Black_Star, 20.12.2017 в 22:12.
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2017, 10:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Black_Star
как сделать так что б по этим radio кнопкам можно было передвигаться через Tab ?
У тебя нет радиокнопок как таковых... Ты их скрыл.
Т.ч. фокусироваться не на чем.
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2017, 12:16
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Сообщение от ksa Посмотреть сообщение
У тебя нет радиокнопок как таковых... Ты их скрыл.
Т.ч. фокусироваться не на чем.
Как ходя Tab-ом по контенту иметь возможность активировать radio кнопки с клавиатуры, находящееся в label, так что б эти изменения можно было наблюдать визуально, при этом сами radio кнопки были бы скрыты для наблюдателя? Теперь правильно...?
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2017, 13:21
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Black_Star, при твоей верстке не получится как ты хочешь.

label реагирует только на клики мышкой, Enter она не отработает.
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2017, 15:01
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

ksa, ok я готов исправить вёрстку. Если прятать radio-кнопки через opacity это не помогает https://jsfiddle.net/huj9kpav/2/
Ответить с цитированием
  #6 (permalink)  
Старый 21.12.2017, 16:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Black_Star,
может скриптом
if (keycode == 13) checked
if (keycode == 9) next focus

Последний раз редактировалось рони, 21.12.2017 в 16:11.
Ответить с цитированием
  #7 (permalink)  
Старый 21.12.2017, 21:22
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

А проще ни как? неужели это такая сложна задача и мне обязательно надо вставлять эти JS костыли? Я же просто хочу сделать сайт с доступностью для бедных людей, у которых нету денег на мышку и тачпад
Ответить с цитированием
  #8 (permalink)  
Старый 22.12.2017, 08:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Black_Star
Я же просто хочу сделать сайт с доступностью для бедных людей, у которых нету денег на мышку и тачпад
Тогда нефик мудрить с прятаньем радиокнопок...
Ответить с цитированием
  #9 (permalink)  
Старый 22.12.2017, 18:12
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Сообщение от ksa Посмотреть сообщение
Тогда нефик мудрить с прятаньем радиокнопок...
Я готов выслушать решение без прятанья радиокнопок. Не активируется <input type="radio"> на Enter хоть ты тресни. Хоть в W3C жалобу пиши
Ответить с цитированием
  #10 (permalink)  
Старый 25.12.2017, 11:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от Black_Star
Я готов выслушать решение без прятанья радиокнопок. Не активируется <input type="radio"> на Enter хоть ты тресни.
Тут кагбэ нужно вспомнить как оно вообще работает на кнопках...
Инпут нормально фокусируется.
<label class="bl_payment__label" tabindex="0">
	<input class="" type="radio" name="payment">
	<span class="bl_payment__text">Оплата наличными</span>
</label>
<label class="bl_payment__label" tabindex="0">
	<input class="" type="radio" name="payment">
	<span class="bl_payment__text">Банковский перевод</span>
</label>
<script type='text/javascript'>
document.querySelector('input').focus();
</script>

Но работает на кнопках своеобразно. "Чекается" он не Enter'ом, а пробелом. Перемещение внутри одной группы не Tab'ом, а стрелками.
Причем при передвижении стрелками перемещается и отметка радиокнопки...

Вот с этим всем и придется мириться.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как получит ссылку на элемент внутри которого запустили JS код? aRpi Events/DOM/Window 20 02.10.2011 13:36
Как передать элемент в переменную из функции kichSman jQuery 3 12.07.2011 22:16
[jQuery] [Обработка клика] Как не потерять текущий контекст внутри обработчика? xintrea Events/DOM/Window 1 10.02.2011 16:34
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11