asp.net - jQuery 与 ASP.NET WebForms - 禁用文本框

标签 asp.net jquery jquery-1.3

另一个 jQuery 菜鸟问题 - 我做错了什么?

我有一些由 ASP.NET 3.5 Webforms 呈现的 HTML 标记,如下所示:

<input id="ctl01_cphContent_pnlBasicInfo_chkRC" 
       type="checkbox" name="ctl01$cphContent$pnlBasicInfo$chkRC" />
<label for="ctl01_cphContent_cntPromos_pnlBasicInfo_chkRC">Recurrent Charges</label>

<span id="ctl01_cphContent_cntPromos_pnlBasicInfo_lblPromoValidFor" 
      class="rcPromo">Validity:</span>

<span class="rcPromo">
   <input id="ctl01_cphContent_pnlBasicInfo_rbnDiscountValidFor" 
          type="radio" name="ctl01$cphContent$pnlBasicInfo$discountValidFor" 
          value="rbnDiscountValidFor" checked="checked" />
   <label for="ctl01_cphContent_cntPromos_pnlBasicInfo_rbnDiscountValidFor">valid for</label>
</span>
<span class="rcPromo">
   <input id="ctl01_cphContent_pnlBasicInfo_rbnDiscountValidUntil" 
          type="radio" name="ctl01$cphContent$pnlBasicInfo$discountValidFor" 
          value="rbnDiscountValidUntil" />
   <label for="ctl01_cphContent_cntPromos_pnlBasicInfo_rbnDiscountValidUntil">valid until</label>
</span>

<input name="ctl01$cphContent$pnlBasicInfo$txtDiscountMonths" type="text"
       id="ctl01_cphContent_pnlBasicInfo_txtDiscountMonths" 
       class="textbox" class="rcPromo" originalValue="" style="width:30px;" />
<span id="ctl01_cphContent_cntPromos_pnlBasicInfo_lblMonths" class="rcPromo"></span>

<input name="ctl01$cphContent$pnlBasicInfo$txtDiscountUntil" type="text" 
       id="ctl01_cphContent_pnlBasicInfo_txtDiscountUntil" 
       class="textbox" class="rcPromo" originalValue="" style="width:150px;" />
  • 我有一个选中的“chkRC”,我想捕获它并使用它来启用/禁用其他 UI 控件
  • 我有许多标签、输入(类型= radio )和输入(类型=文本)UI 控件。这些都标有“rcPromo”虚拟 CSS 类
  • 我有一个名为“textbox”的 CSS 类用于正常文本框,“textboxDisabled”用于文本框的禁用状态,在外部引用的 CSS 文件中,工作正常(即在服务器端代码中使用时)

我试图在 jQuery 中完成的是:当禁用“chkRC”复选框时,我想禁用所有相关的 UI 控件。

我的 jQuery 看起来像这样:

    $(document).ready(function() {
        $("#<%= chkRC.ClientID %>").click(function() {
            $('.rcPromo > :label').toggleClass('dimmed');

            if (this.checked) {
                $('.rcPromo').removeAttr('disabled');
                $('.rcPromo .textboxDisabled').addClass('textbox').removeClass('textboxDisabled');
            }
            else {
                $('.rcPromo > :input').removeAttr('checked');
                $('.rcPromo .textbox').addClass('textboxDisabled').removeClass('textbox');
                $('.rcPromo').attr('disabled', true);
            }
        });
    });

它适用于标签和单选按钮 - 但我只是无法让它与文本框一起使用 - 它们只是保持不变,没有任何变化(它们不会被禁用,也不会改变他们的外观也表明他们是残疾人)。

我不明白这一点 - 我确实看到了几个(比示例中多一些)文本框,它们是 <input type="text">在 HTML 中,他们确实有 class="rcPromo"class="textbox"关于它们 - 那么为什么 jQuery 不查找并更新它们呢?

有什么想法吗?

马克

最佳答案

我想不出一种方法来增强分配给皮肤文件中的控件的CSS类名(phoenix是正确的,类名需要添加到同一属性中)。

不过我可以想到一些解决方法:

--> 您可以将所有要禁用的文本框包装在具有给定类的 div 中:

<div class="disable_textbox"><asp:textbox id="".../></div>

然后通过选择禁用它们:

$('.disable_textbox input').attr('disabled', true);

--> 您可以在要禁用的文本框的 ID 中包含字符串:

<asp:textbox id="txtDiscountUntil_DisableMe" ... />

然后像这样禁用它们:

$("input[id*='DisableMe']").attr('disabled', true);

--> 您可以向文本框添加自定义属性:

txtDiscountUntil.Attributes.Add("disableme", "true");

然后像这样禁用它们:

$("input[disableme='true']").attr('disabled', true);

关于asp.net - jQuery 与 ASP.NET WebForms - 禁用文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1310466/

相关文章:

jquery - 如何为 jQuery 对象分配属性?

jquery - 无法使用ajax检索大量数据

asp.net - 转发器页脚模板内的 ASP 文字

javascript - 在多个动态添加的表单上初始化 jQuery validate() 函数

javascript - Highcharts 中存在多个系列数据,但第二条线图显示被压扁?

memory-leaks - 内存泄漏 JQuery - 所有浏览器

jQuery 焦点功能在 Firefox 中不起作用

javascript - document.ready 函数中的多个函数

asp.net - 不支持关键字 : 'server'

javascript - 将ajax添加到无限滚动