在数据表中检查至少一行后如何启用按钮?

How to enable button after at least one row has been checked in Datatables?

在这个测试代码中,我有一个按钮,如果没有复选框被选中,我想禁用它,如果至少有一个复选框被选中,我想启用它。

执行此操作的函数有效,但不适用于数据表。我试图让它在数据表上工作。但它不适合我

这不是我的代码...这只是为了测试。

$(document).ready(function() {
  var dataTable = $('#example').dataTable({
    columnDefs: [{
        orderable: false,
        className: 'select-checkbox',
        targets: 0
      },
      {
        "visible": false,
        "searchable": false,
      }
    ],
    select: {
      style: 'multi',
      selector: 'td:first-child'
    },
    order: [
      [1, 'asc']
    ]
  })

  var checkBoxes = $('.select-checkbox');
  checkBoxes.change(function() {
    $('#btnSelectedRows').prop('disabled', checkBoxes.filter(':checked').length < 1);
  });
  $('.select-checkbox').change();

});


<
/script>
<!DOCTYPE html>
<html>

<head>


  <link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables.css">
  <link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/css/jquery.dataTables_themeroller.css">
  <script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
  <script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.0/jquery.dataTables.min.js"></script>
  <link rel="stylesheet" href="https://cdn.datatables.net/select/1.3.1/css/select.dataTables.min.css">
  <link href='http://codeseven.github.io/toastr/build/toastr.min.css' rel='stylesheet' type="text/css">
  <script type="text/javascript" src="https://cdn.datatables.net/v/dt/dt-1.10.22/datatables.min.js"></script>
  <script type="text/javascript" src="https://cdn.datatables.net/select/1.3.1/js/dataTables.select.min.js"></script>
  <script src="js/bootstrap.min.js"></script>


</head>

<body>


  <button id="btnSelectedRows" name="btnSelectedRows" data-target="#grnModal" data-toggle="modal" class="btn btn-success btn-s">
                click
                </button>
  <table class="dataTable" id="example">
    <thead>
      <tr>
        <th></th>
        <th>Rendering engine</th>
        <th>Browser</th>
        <th>Platform(s)</th>
        <th>Engine version</th>
        <th>CSS grade</th>
      </tr>
    </thead>
    <tbody>


      <tr>

        <td></td>
        <td>Misc</td>
        <td>Dillo 0.8</td>
        <td>Embedded devices</td>
        <td>-</td>
        <td>X</td>
      </tr>
      <tr>
        <td></td>
        <td>Misc</td>
        <td>Links</td>
        <td>Text only</td>
        <td>-</td>
        <td>X</td>
      </tr>
      <tr>
        <td></td>
        <td>Misc</td>
        <td>Lynx</td>
        <td>Text only</td>
        <td>-</td>
        <td>X</td>
      </tr>
      <tr>
        <td></td>
        <td>Misc</td>
        <td>IE Mobile</td>
        <td>Windows Mobile 6</td>
        <td>-</td>
        <td>C</td>
      </tr>
      <tr>
        <td></td>
        <td>Misc</td>
        <td>PSP browser</td>
        <td>PSP</td>
        <td>-</td>
        <td>C</td>
      </tr>
      <tr>
        <td></td>
        <td>Other browsers</td>
        <td>All others</td>
        <td>-</td>
        <td>-</td>
        <td>U</td>
      </tr>
    </tbody>
  </table>

向 table 添加委托事件侦听器,侦听更改并检查是否选中了任何复选框

var table = $("#example");
var btn = $('#btnSelectedRows');

function enableBtn() {
  btn.prop("disabled", table.find("input:checked").length === 0)
}

table.on("change", "input", enableBtn);
enableBtn();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="btnSelectedRows">Test</button>

<table id="example">
  <tbody>
    <tr>
      <td><input type="checkbox" /></td>
    </tr>
    <tr>
      <td><input type="checkbox" /></td>
    </tr>
    <tr>
      <td><input type="checkbox" /></td>
    </tr>
  </tbody>
</table>

DataTables也有选择事件

table.on( 'deselect', function ( e, dt, type, indexes ) { console.log(indexes);});
table.on( 'select', function ( e, dt, type, indexes ) {console.log(indexes);});

在文档中准备加载数据表而不放置任何条件,在数据表之后你可以放置这些代码行

if($(document).find("input[type='checkbox']").is(':checked').length === 0)
{
  $('#btn').prop("disabled", true);
}