JQuery启用/禁用基于所选asp:CheckBoxList的asp:Textboxes

时间:2014-06-27 13:35:18

标签: jquery asp.net textbox checkboxlist

我正在开发一个项目,如果选择了星期几,用户将需要输入工作时间。用户已请求禁用字段,直到检查日期为止。

理想情况下,我希望尽可能保持智能和动态,使用日值来构建输入,而不是根据每天编写单独的条件。

到目前为止,这是我的基本设置:

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

用JQuery捕获click事件,并构建对象名称:

   $("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"变量正在填充正确的ID,但我遇到的问题是选择器似乎没有找到控件。

有没有人知道我哪里出错了?

1 个答案:

答案 0 :(得分:0)

我设法找到了一个解决方案,希望将来可以帮助某人 - 我将ClientIDMode属性更改为" Static"在asp:textboxes上并将我的jQuery选择器修改为:
$(" [id $ =" + startControlID +"]")。attr("禁用",false);

所以我的整个jQuery函数是:

$("输入[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;
                $("[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);
            }
        });

希望这可以节省未来土地上的某个人!