2012-10-10 195 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') )不。