【问题标题】:Column auto-sorting on focus/click in input field dataTable在输入字段数据表中焦点/单击时列自动排序
【发布时间】:2021-05-26 14:08:55
【问题描述】:

当dataTable也有输入框和排序时,如果点击输入字段,那么dataTable会自动排序,这对dataTable来说不是很好的做法。这里的解决方案对你有帮助。

【问题讨论】:

    标签: javascript datatable click focus


    【解决方案1】:

    function SetupColumnSearch(table, columnTitles) {
        /* Setup column-level search input fields. */
        $(table.table().header()).find('th').each( function () {
            var title = $(this).text();
            if (columnTitles.indexOf(title) > -1)
                $(this).html( '<input type="text" placeholder="'+title+'" class="column_search" oninput="stopPropagation(event)" onclick="stopPropagation(event);"/>' );
        } );
    
        /* Setup column-level searches on enter key only. */
        table.columns().every( function () {
            var column = this;
            $( 'input.column_search', this.header() ).on( 'keydown', function (e) {
                /* Ignore all keyup events except for return keys */
                if(e.type === 'keydown' && e.keyCode === 13){
                  e.preventDefault();
                  
                  
                /* Avoid a DataTables bug where invisible columns show up */
                if (column.visible()) {
                    table.column( column.index() ).search( this.value ).draw();
                }
                } 
            } );
        } );
    }
    
    function stopPropagation(evt) {
        if (evt.stopPropagation !== undefined) {
            evt.preventDefault();
            evt.stopPropagation();
        } else {
            evt.cancelBubble = true;
        }
    }
    
    $(document).ready(function() {
      oTable = $('#table').DataTable( {} );
      SetupColumnSearch(oTable, ["First", "Last"])
    });
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS Bin</title>
    </head>
    <script src="https://code.jquery.com/jquery.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/dt-1.10.13/b-1.2.4/b-colvis-1.2.4/b-html5-1.2.4/b-print-1.2.4/fh-3.1.2/r-2.1.1/se-1.2.0/datatables.min.css"/>
      <script type="text/javascript" src="https://cdn.datatables.net/v/bs/dt-1.10.13/b-1.2.4/b-colvis-1.2.4/b-html5-1.2.4/b-print-1.2.4/fh-3.1.2/r-2.1.1/se-1.2.0/datatables.min.js"></script>    <script src="{{ url_for('static', filename='js/plugins/forms/selects/select2.min.js') }}"></script>
    
      <body>
    <table id="table" class="dataTables listing table table-striped table-responsive table-hover" width="100%">
      <thead>
        <tr>
          <th>Date</th><!-- Hidden column -->
          <th>First</th>
          <th>Last</th>
          <th>Salary</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1/1/1970</td>
          <td>Joe</td>
          <td>Smith</td>
          <td>5,000</td>
        </tr>
      </tbody>
      </table>
      
    </body>
    </html>

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 2018-07-12
      • 2021-02-25
      • 1970-01-01
      • 2011-10-12
      相关资源
      最近更新 更多