#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);
}
});
Надеюсь, это сэкономит кому-то в будущем некоторое время!