Показать сообщение отдельно
  #3 (permalink)  
Старый 21.04.2020, 10:40
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от ureech
Но нужно подстраховаться,если юзер введёт значение в текстовой инпут,а радио не отметит. Как можно это сделать?
Хороший UX предполагает наличие <label>, а значит нажатие на текст тоже выделяет определённую радио-кнопку.

Сообщение от ureech
сли юзер введёт значение в текстовой инпут,а радио не отметит. Как можно это сделать? Как отметить радио у конкретного инпута?
Это должно происходить автоматический...

<form>
	<fieldset>
		<legend>fruit</legend>
		<label><input type="radio" name="fruit" value="apple">apple</label>
		<label><input type="radio" name="fruit" value="orange">orange</label>
		<label><input type="radio" name="fruit" value=""><input></label>
	</fieldset>
</form>

<script><!-- нужен только один скрипт для обработки всех радио-кнопок форм с редактируемым значением -->

for(const input of document.querySelectorAll("label input[type=radio] ~ input")) {
	const radioButton = input.closest("label").querySelector("input[type=radio]");

	input.addEventListener("focus", event => {
		radioButton.checked = true;
	});

	input.addEventListener("input", event => {
		radioButton.value = input.value;
	});
}

</script>


Как видите, вам не нужна дополнительная обработка текстового поля — вы выберите кнопку или введёте текст — значение хранится в параметре fruit, т. е. одинаковая обработка на сервере или в приложении.

Последний раз редактировалось Malleys, 21.04.2020 в 10:45.
Ответить с цитированием