Как оперативно реагировать на input radio?

Рейтинг: 0Ответов: 2Опубликовано: 19.03.2015

Всего лишь два переключателя:

<input type="radio" name="r" value="1">Даты неизвестны<br>
<input type="radio" name="r" value="2"><span>Даты известны<span>
<div id="div1"></div>

По умолчанию ничего не выбрано, когда выбираем второй, то добавляем поля ввода (до сюда сделал сам):

function check() {
    var inp = document.getElementsByName('r');
    for (var i = 0; i < inp.length; i++) {
        if (inp[i].type == "radio" && inp[i].checked) {
            if (inp[i].value == 1) {
                document.getElementsByName('text1').disabled = true;
            }
            if (inp[i].value == 2) {
                document.getElementById('div1').innerHTML = '<input type="date"  name="d1" ><input type="date"  name="d2" >';

            }
        }
    }
}

Но "типа ошибся и меняем выбор" - добавленное поле не пропадает. Попытка сделать его неактивным ни к чему не приводит (этого достаточно). Как вытащить html из js? Как убрать добавленное "по ошибке" поле?

ссылка на jsfiddle

Ответы

▲ 2Принят

Ошибка в том, что в html коде нету элементов с именем 'text1'. Кроме того, код:

document.getElementsByName('text1')

возвращает массив элементов и у массива явно нету свойства "disabled".

И как отметили выше, инпуты достаточно сделать изначально скрытыми.

Пример со скрытием/закрытием: http://jsfiddle.net/gbcx09tp/1/

▲ 1

Изменил Ваш код. https://jsfiddle.net/shilgen/egL035xg/1/ Можно не заполнять инпутами каждый раз элемент div1, а просто изначально их сделать скрытыми, а потом показывать/скрывать.