2012-10-10 135 views
7

目的是为了;
如果复选框被禁用,则不执行任何操作。
如果复选框已启用并被选中,请设置按钮的样式。
这是我到目前为止;检查复选框已禁用(jquery)

$(document).ready(function (e) { 


     $(".checkbox").live("click", function() { 

      if ($(this).hasAttribute('disabled')) { 
       return false; 
      } 
      var isAnyChecked; 

      $("input[type=checkbox]").each(function() { 
       var checkedValue = $(this).attr("checked"); 
       if (checkedValue == "checked") { 
        isAnyChecked = true; 
       } 


      }); 

      if (isAnyChecked) { 
       $("#<%= btnConfirm.ClientID %>").css("display", "block"); 

      } else { 
       $("#<%= btnConfirm.ClientID %>").css("display", "none"); 

      } 


     }); }); 

我试过.is(':disabled').hasAttr().prop().attr()。任何帮助将不胜感激。

+2

对于初学者来说,'.live'已被弃用,应该切换为'.on' – Chase

回答

21

您必须检查disabled属性是否为真:.attr('disabled')

或者,更好,使用.is(':disabled') .---


编辑:如此看来,.attr现在已经过时,这种用途(见http://api.jquery.com/attr/) 的首选方法是:

$('#myCheckbox').prop('disabled') 

必须注意的是,至今仍然有效:

$('#myCheckbox').is(':disabled') 

尝试在这里:https://jsfiddle.net/Robloche/phaqfrmj/

+0

我编辑了我的答案。 – Rodolphe

+0

它没有工作。谢谢你,为了你的利益。 – user1595357

+1

不,你必须检查属性:'.prop('disabled')' – Bergi

1

您也可以尝试使用此:

$("#myCheckBox").is('[disabled]'); 

工作对我来说,以确定是否一个元素被禁用,而其他解决方案(.disabled.is(':disabled').attr('disabled').prop('disabled') )不。