使用DataTables按下拉列值过滤列

时间:2016-08-10 06:10:50

标签: javascript jquery datatables

我使用DataTables-plug(版本1.10.12)在我的网站上显示一个表。 该表的一列称为“状态”,包含一个下拉字段,如:

<tr>
<td>
...
    <select name="dropdown_status" id="139">
      <option value="-1">canceled</option>
      <option value="1" selected>open</option>
      <option value="2">in work</option>
      <option value="3">waiting</option>
      <option value="4">closed</option>
    </select>
...
</td>
</tr>

我希望按status - 列进行过滤,例如,仅显示选定状态为closed的行。 默认过滤当然不适用于此类内容,因为它不是需要过滤的纯文本,而是需要剥离的html代码。 我已经尝试了使用选择器的不同方法,DataTables渲染和搜索功能。我是JavaScript,AJAX,JQuery和DataTables的新手,我的想法已经不多了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

JS代码:

$(document).ready(function() {
    $('#example').DataTable( {
        initComplete: function () {
            this.api().columns().every( function () {
                var column = this;
                var select = $('<select><option value=""></option></select>')
                    .appendTo( $(column.footer()).empty() )
                    .on( 'change', function () {
                        var val = $.fn.dataTable.util.escapeRegex(
                            $(this).val()
                        );

                        column
                            .search( val ? '^'+val+'$' : '', true, false )
                            .draw();
                    } );

                column.data().unique().sort().each( function ( d, j ) {
                    select.append( '<option value="'+d+'">'+d+'</option>' )
                } );
            } );
        }
    } );
} );

HTML code:

<table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </tfoot>
        <tbody>
            <tr>
                <td>Tiger Nixon</td>
                <td>System Architect</td>
                <td>Edinburgh</td>
                <td>61</td>
                <td>2011/04/25</td>
                <td>$320,800</td>
            </tr>

        </tbody>
    </table>

包含这些数据表jquery文件:

https://code.jquery.com/jquery-1.12.3.js

https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js