jQuery включить / отключить asp: текстовые поля на основе выбранного asp: список флажков

#jquery #asp.net #textbox #checkboxlist

#jquery #asp.net #текстовое поле #список флажков

Вопрос:

Я работаю над проектом, в котором пользователям нужно будет вводить рабочее время, если выбран день недели. Пользователи попросили отключить поля до тех пор, пока не будет установлен флажок.

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

Вот моя базовая настройка на данный момент:

https://i.imgur.com/VhBvZs3.png

И jQuery, чтобы перехватить событие щелчка и создать имя объекта:

    $("input[type=checkbox][id*=cblDays]").click(function () {
                if (this.checked) {
                    var day = $(this).val();
                    var startControlID = "txtNewStart"   day;
                    var finishControlID = "txtNewFinish"   day;
                    var lunchControlID = "ddlLunchNew"   day;
                    $this.find('input[name$='   startControlID   ']').attr("disabled", false);

                }
 

Я доказал, что переменная «startControlID» заполняется правильным идентификатором, но проблема, с которой я сталкиваюсь, заключается в том, что селектор, похоже, не находит элемент управления.

Кто-нибудь знает, где я ошибаюсь?

Ответ №1:

Мне удалось найти решение, которое, надеюсь, поможет кому-то в будущем — я изменил свойство ClientIDMode на «Статическое» в asp: текстовые поля и изменил свой селектор jQuery на:
$(«[id $ =» startControlID «]»).attr(«отключено», false);

Итак, вся моя функция jQuery:

$(«ввод [тип = флажок][идентификатор * = cblDays]»).нажмите (функция () {

             if (this.checked) {
                var day = $(this).val();
                var startControlID = "txtNewStart"   day;
                var finishControlID = "txtNewFinish"   day;
                var lunchControlID = "ddlLunchNew"   day;
                $("[id$="   startControlID   "]").attr("disabled", false);
                $("[id$="   finishControlID   "]").attr("disabled", false);
                $("[id$="   lunchControlID   "]").attr("disabled", false);
            }
            else {
                var day = $(this).val();
                var startControlID = "txtNewStart"   day;
                var finishControlID = "txtNewFinish"   day;
                var lunchControlID = "ddlLunchNew"   day;
                $("[id$="   startControlID   "]").attr("disabled", true);
                $("[id$="   finishControlID   "]").attr("disabled", true);
                $("[id$="   lunchControlID   "]").attr("disabled", true);
            }
        });
 

Надеюсь, это сэкономит кому-то в будущем некоторое время!