Как менять textarea при нажатии?

Добрый вечер.
Существует 2 radio кнопки и 2 textarea

<input type="radio">
<input tyle="radio">

<textarea placeholder="Окно ввода для первой radio кнопки"></textarea>
<textarea placeholder="Окно ввода для второй radio кнопки"></textarea>


Вопрос: как сделать так, что-бы при нажатии на первую радио кнопку, показывался только textarea для неё, а второй textarea был скрыт, так же аналогично со вторым radio при нажатии на него открывался textarea для второй.
  • Вопрос задан
  • 587 просмотров
Решения вопроса 2
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Вариант на чистом JS с привязкой по индексу
var textarea = [].slice.call(document.querySelectorAll('textarea'));
[].forEach.call(document.querySelectorAll('[type=radio]'), function(el, i) {
    (function(index) {
        textarea[index].style.display = el.checked ? 'inline' : 'none';
        el.addEventListener('change', function() {
            textarea.forEach(function(ta, i) {
                ta.style.display = i === index ? 'inline' : 'none';
            });
        });
    }(i));
});


Вариант только с использование CSS, если позволяет разметка:
<input type="radio" name="group">
<textarea placeholder="Окно ввода для первой radio кнопки"></textarea>
<input type="radio" name="group">
<textarea placeholder="Окно ввода для второй radio кнопки"></textarea>

textarea {
    display: none;
}
[type=radio] {
    float: left;
}
[type=radio]:checked + textarea {
    display: inline;
}
Ответ написан
@lega
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
edli007
@edli007
full stack, team lead
только через javaScript или извращаясь с :focus в css, но последнее будет слетать при любом клике за пределами области, а нужно будет заменить на какой нибудь div и маскировать его под radio.
Ответ написан
Bowen
@Bowen
Японский бог
HTML
<div class="inputs-wrap">
	<input type="radio"  class="inputs-wrap__radio inputs-wrap__radio--1">
	<input type="radio"  class="inputs-wrap__radio inputs-wrap__radio--2">
</div>
<div class="textareas-wrap">
	<textarea placeholder="Окно ввода для первой radio кнопки" class="textareas-wrap__field textareas-wrap__field--1"></textarea>
	<textarea placeholder="Окно ввода для второй radio кнопки" class="textareas-wrap__field textareas-wrap__field--2"></textarea>
</div>
CSS
.textareas-wrap__field--1 {
	display: none;
}
jQuery
$('.inputs-wrap__radio').on('change', function() {
        var i = $(this).index();
	$('.textareas-wrap__field').eq(i).toggle();
});

P.S. Все должно работать, если конечно я что то не перепутал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы