如何从数据表中的搜索过滤器中省略特定部分?

How to omit particular section from Search filter in DataTables?

我想从 Datatable 的搜索过滤器中省略 ul>li。当我在没有 ul 列表的情况下进行过滤时,搜索功能工作正常。但我想要 ul 列表部分,而且数据表不应包含搜索中的列表。如何在数据表搜索中省略这个ul>li

我已经在这里添加了我的代码。

HTML:

<table  id="warranty_table">
    <thead>
        <tr>
            <th>Status</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td data-id="1" id="STS1" >
                <span data-toggle='dropdown' id='Covered_btn' aria-expanded='false'><span class='status'>Covered</span></span>
                <ul class="dropdown-menu" role="menu" style="position: absolute; top:initial; left:initial;  min-width: 110px;">
                    <li><a href="javascript:;" id="1" class="status_change">Determine issue</a></li>
                    <li><a href="javascript:;" id="2" class="status_change">Covered</a></li>    
                    <li><a href="javascript:;" id="3" class="status_change">Not covered</a></li>
                    <li><a href="javascript:;" id="4" class="status_change">Assign Vendor</a></li>
                    <li><a href="javascript:;" id="5" class="status_change">Followup with HO</a></li>
                    <li><a href="javascript:;" id="6" class="status_change">Followup with Vendor</a></li>    
                    <li><a href="javascript:;" id="7" class="status_change">Diagnose issue</a></li>
                    <li><a href="javascript:;" id="8" class="status_change">Give Vendor Authorization</a></li>
                    <li><a href="javascript:;" id="9" class="status_change">Close claim</a></li>
                </ul>
            </td>            
        </tr>
        <tr>
            <td data-id="2" id="STS2" >
                <span data-toggle='dropdown' id='Covered_btn' aria-expanded='false'><span class='status'>Assign Vendor</span></span>
                <ul class="dropdown-menu" role="menu" style="position: absolute; top:initial; left:initial;  min-width: 110px;">
                    <li><a href="javascript:;" id="1" class="status_change">Determine issue</a></li>
                    <li><a href="javascript:;" id="2" class="status_change">Covered</a></li>    
                    <li><a href="javascript:;" id="3" class="status_change">Not covered</a></li>
                    <li><a href="javascript:;" id="4" class="status_change">Assign Vendor</a></li>
                    <li><a href="javascript:;" id="5" class="status_change">Followup with HO</a></li>
                    <li><a href="javascript:;" id="6" class="status_change">Followup with Vendor</a></li>    
                    <li><a href="javascript:;" id="7" class="status_change">Diagnose issue</a></li>
                    <li><a href="javascript:;" id="8" class="status_change">Give Vendor Authorization</a></li>
                    <li><a href="javascript:;" id="9" class="status_change">Close claim</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td data-id="36" id="STS36" >
                <span data-toggle='dropdown' id='Determine _btn' aria-expanded='false' class='btn btn-warning btn-xs dropdown-toggle status_changespan '><span class='status'>Determine issue</span><span class='caret fiveML'></span></span>
                <ul class="dropdown-menu" role="menu" style="position: absolute; top:initial; left:initial;  min-width: 110px;">
                    <li><a href="javascript:;" id="1" class="status_change">Determine issue</a></li>
                    <li><a href="javascript:;" id="2" class="status_change">Covered</a></li>    
                    <li><a href="javascript:;" id="3" class="status_change">Not covered</a></li>
                    <li><a href="javascript:;" id="4" class="status_change">Assign Vendor</a></li>
                    <li><a href="javascript:;" id="5" class="status_change">Followup with HO</a></li>
                    <li><a href="javascript:;" id="6" class="status_change">Followup with Vendor</a></li>    
                    <li><a href="javascript:;" id="7" class="status_change">Diagnose issue</a></li>
                    <li><a href="javascript:;" id="8" class="status_change">Give Vendor Authorization</a></li>
                    <li><a href="javascript:;" id="9" class="status_change">Close claim</a></li>
                </ul>
            </td>
        </tr>
    </tbody>
</table>

Javascript:

$(document).ready(function() {
$('#warranty_table').DataTable();
});

您可以创建自己的自定义搜索功能:

$.fn.dataTable.ext.search.push(
    function (settings, data, dataIndex) {
        var match = false;
        var input = $('#search').val().toLowerCase();
        var noOfRows = data.length;
        var rowData = '';

        rowData = table.row(dataIndex).data();

        var startIndex = rowData.toString().indexOf('<ul');
        var endIndex = rowData.toString().indexOf('</ul>') + 5;
        var strUl = rowData.toString().slice(startIndex, endIndex);

        rowData = rowData.toString().replace(strUl, '');
        rowData = $(rowData).text(); // remove HTML tags

        if (input.length == 0) {
            return true;
        } else if (rowData.toString().toLowerCase().indexOf(input) >= 0) {
            return true;
        }
        return false;
    });

此函数将获取每个 table 行的原始数据,去除 ul,然后根据更新后的字符串进行比较。

我添加了一个新的搜索输入字段,可用于覆盖默认搜索。

查看我的演示 here。希望对你有帮助。