2016-01-22 51 views
0

我可以根據下拉值禁用複選框,但文本保持粗體。 有沒有辦法達到這個目的,並禁用它,並「灰色」出來? 這個問題不是重複的。使用jQuery禁用複選框控件的Text屬性

<td><asp:CheckBox id="cb1" ClientIDMode="Static" runat="server" Text="Some Text" /></td> 

function ddlChanged() { 
     var enable = !($("#ddlTestsCancelled").val() == 1); 
     EnableCheckBoxes(enable, $("#cb1")); 
    } 

function EnableCheckBoxes(enable, chk) {    
     chk.prop("disabled", enable);   
     chk.prop("checked", false);   
    } 

回答

2

你可以做的是讓自ASP.Net以來,複選框的標籤元素將複選框的Text顯示爲標籤元素,然後將其CSS顏色屬性更改爲灰色。

function EnableCheckBoxes(enable, chk) {    
     chk.prop("disabled", enable);   
     chk.prop("checked", false);  
     if(enabled === true) { 
      $("label[for='<%=cb1.ClientID%>']").css("color", "black"); 
     } else { 
     $("label[for='<%=cb1.ClientID%>']").css("color", "gray") 
     }  
    } 

另外,模擬殘疾人的效果,你可以設置不透明度爲像0.5,而不是改變顏色屬性,然後啓用複選框,當它重置爲1。代碼如下。

function EnableCheckBoxes(enable, chk) {    
     chk.prop("disabled", enable);   
     chk.prop("checked", false);  
     if(enabled === true) { 
      $("label[for='<%=cb1.ClientID%>']").css("opacity", 1); 
     } else { 
     $("label[for='<%=cb1.ClientID%>']").css("opacity", .5) 
     }  
    } 

如果你想使用chk而不是複選框的獲取客戶端Id,然後使用以下版本相同的方法。

function EnableCheckBoxes(enable, chk) {    
     chk.prop("disabled", enable);   
     chk.prop("checked", false);  
     if(enabled === true) { 
      $("label[for='" + chk[0].id + "']").css("opacity", 1); 
     } else { 
     $("label[for='" + chk[0].id + "']").css("opacity", .5) 
     }  
    } 
+0

標籤!沒想到這一點。好的。 – Chase

+0

這就是ASP.Net如何呈現複選框的文本。 – Sunil

+0

@Sunil你明確引用CheckBox cb1,但我需要更通用的東西來處理傳入的變量 - chk –

0

如果你想取消加粗和灰色出一個HTML元素的文本,你可以使用jQuery的css()方法來動態地應用樣式如下:

$("#cb1").css("font-weight", "normal"); 
$("#cb1").css("color", "gray"); 
+0

我已經添加到EnableCheckBoxes()函數,但它沒有任何效果? –

+0

@Sunil有更好的答案。我沒有想到這個標籤。 – Chase