2016-11-08 60 views
2

以下是我用於檢查所有複選框的代碼。防止在點擊checkAll時檢查已禁用的複選框所有

jQuery("#checkAll").on('click',function() { // bulk checked 
      var status = this.checked; 
      jQuery(".selectRow").each(function() { 
       jQuery(this).prop("checked",status); 
      }); 
     }); 

但是,當我點擊CheckAll鏈接時,已經禁用了複選框。點擊checkAll鏈接時如何阻止已禁用的複選框被選中?任何幫助將不勝感激。

回答

4

可以使用:not選擇器選擇每checkbox不具備[disabled]屬性:

$('#checkAll').on("click", function(event){ 
 
    $('input[type="checkbox"]:not([disabled])').prop('checked', true) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" /><br /> 
 
<input type="checkbox" disabled="disabled" /><br /> 
 
<input type="checkbox" /><br /> 
 
<input id="checkAll" type="button" value="check all" />

0

關於它如何工作的一個簡單例子ŝ

<!DOCTYPE html> 
<html lang="en"> 
<html> 
<head> 
    <title>Test</title> 
    <script src="http://code.jquery.com/jquery-3.1.1.min.js"></script> 
    <script type="text/javascript"> 
     jQuery(document).ready(doReady); 

     function doReady() 
     { 
      jQuery('#checkAll') 
        .on("click", 
          function (event) { 
           var $that = null; 
           event.preventDefault(); 
            jQuery.each(jQuery(".selectRow"), 
              function (index, value) { 
               $that = jQuery(value); 
               if (!$that.is(':checked') && !$that.is(":disabled")) { 
                jQuery(this).attr("checked", "checked"); 
               } 
              } 
            ); 
          } 
         ); 
     } 
    </script> 
</head> 
<body> 
    <button id="checkAll" name="checkAll">check</button> 
    <input type="checkbox" class="selectRow" /> 
    <input type="checkbox" class="selectRow" /> 
    <input type="checkbox" class="selectRow" /> 
    <input type="checkbox" class="selectRow" /> 
    <input type="checkbox" class="selectRow" /> 
    <input type="checkbox" class="selectRow" disabled="disabled" /> 
</body> 
</html> 

注意,最好是同一個jQuery選擇,以避免受到第二次在整個DOM樹分配給一個變量。

並且還請注意,您錯過了代碼示例中的大括號。