使用ASP.NET WebForms的jQuery – 禁用文本框

另一个jQuery noob问题 – 我做错了什么?

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

  Validity:            
  • 我有一个检查“chkRC”,我想陷阱并使用它来启用/禁用其他UI控件
  • 我有许多标签,输入(type = radio)和输入(type = text)UI控件。 这些都标有“rcPromo”虚拟CSS类
  • 我有一个名为“textbox”的CSS类用于普通文本框,“textboxDisabled”用于文本框的禁用状态,在外部引用的CSS文件中,可以正常工作(在服务器端代码中使用时)

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

我的jQuery看起来像这样:

  $(document).ready(function() { $("#").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); } }); }); 

它适用于标签和radiobuttons – 但我不能让它与文本框一起工作 – 它们只是保持相同,没有任何变化(它们没有被禁用,它们不会改变它们的外观表明他们也被禁用了。

我不明白这一点 – 我确实看到几个(比示例中的更多)文本框,它们是HTML中的 ,它们确实有class="rcPromo"class="textbox"关于他们 – 那么为什么jQuery不能找到并更新那些?

有任何想法吗?

我想不出一种方法可以增加从皮肤文件中赋予控件的css类名称(凤凰是正确的,类名需要添加到同一属性中)。

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

– >您可以在给定类的div中包含要禁用的所有文本框:

 

然后选择以下命令禁用它们:

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

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

  

然后像这样禁用它们:

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

– >您可以在文本框中添加自定义属性:

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

然后像这样禁用它们:

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

您的HTML标记不正确。

您不能添加两个类,如代码中的类。

可以像这样添加两个类

  

而不是喜欢

  

为什么不使用hasClass来检查元素是否设置了这个类?

我认为你必须在两个类的OR条件下给它。