Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Блокировка инпутов (https://javascript.ru/forum/dom-window/69280-blokirovka-inputov.html)

reh 11.06.2017 01:47

Блокировка инпутов
 
Есть код

Код:

    <div class="week_day_wrapper">
        <div class="work_week_day">Воскресенье</div>
        <div>
            <div class="work_day_span">с</div>
            <input maxlength="2" type="text" name="sunday_open_h" class="hours" value="{*.sunday_open_h*}"/>
            <span>:</span>
            <input maxlength="2" type="text" name="sunday_open_m" class="minutes" value="{*.sunday_open_m*}"/>
        </div>
        <div style="margin-top: 5px;">
            <div class="work_day_span">до</div>
            <input maxlength="2" type="text" name="sunday_close_h" class="hours" value="{*.sunday_close_h*}"/>
            <span>:</span>
            <input maxlength="2" type="text" name="sunday_close_m" class="minutes" value="{*.sunday_close_m*}" pattern="[0-5][0-9]"/>
        </div>
        <div class="day_off_week">
            <input type="checkbox" id="checkbox7" name="check_sunday"/>
            <label for="checkbox7">Выходной</label>
        </div>
    </div>

Непойму как сделать чтобы по клику по <input type="checkbox" id="checkbox7" name="check_sunday"/>
4 инпута делались неактивными? Никак понять не могу почему так не работает

$('.day_off_week :checkbox').on('change', function(){ 

                $(this).parent().parent('input[type="text"]').attr('disabled', 'disabled');
            })

j0hnik 11.06.2017 02:58

$(this).parent().siblings('div').children('input[type="text"]').attr('disabled', 'disabled');

reh 11.06.2017 03:03

спасибо!

laimas 11.06.2017 03:07

reh,
.attr('disabled', 'disabled');

.prop('disabled', this.checked)

reh 11.06.2017 10:13

laimas,
Спасибо за совет. Буду знать как проще сделать.

Но у меня нужно еще цвет менять и поле чистить, сделал так

if($(this).prop('checked')){
                    $('input[name="'+inp+'[]"]').val('').attr('disabled', 'disabled').css({'border':'1px solid #cac8c8'});
                }else{
                    $('input[name="'+inp+'[]"]').removeAttr('disabled').css({'border':'1px solid #33668d'});
                }

laimas 11.06.2017 16:00

Цитата:

Сообщение от reh
Буду знать как проще сделать

Это не проще, а нужно так, ибо и .attr('disabled', ''), и .attr('disabled', 'йцукен'), и как угодно, одно и тоже. Метод prop() предназначен для работы со свойствами, а не атрибутами, и хотя можно и так .attr('disabled', true/false).

'input[name="'+inp+'[]"]' - это некорректный селектор, такой селектор должен быть прописан так: 'input[name="'+inp+'\\[\\]"]'

$(this).prop('checked'), проще сразу: this.checked, а используя тернарный оператор сократить буковок в коде.


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