Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отметить чекбокс (https://javascript.ru/forum/dom-window/80042-otmetit-chekboks.html)

ureech 20.04.2020 20:13

Отметить чекбокс
 
Привет.
<input type="radio  name="user_plan" value="1" />
      <input type="text" size="5" class="form-control" name="wish_ves" id="wish_ves" value="">

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

рони 20.04.2020 21:13

ureech,
блок.oninput => (блок input.radio).checked = true

Malleys 21.04.2020 10:40

Цитата:

Сообщение от 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, т. е. одинаковая обработка на сервере или в приложении.

рони 21.04.2020 11:09

Malleys,
:thanks:

ureech 22.04.2020 17:23

Спасибо.Понятно).


Часовой пояс GMT +3, время: 04:30.