2016-11-08 68 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树分配给一个变量。

并且还请注意,您错过了代码示例中的大括号。