Jquery Datatable draw()方法不适用于列筛选器

Jquery Datatable draw()方法不适用于列筛选器,jquery,datatables,datatables-1.10,jquery-2.0,Jquery,Datatables,Datatables 1.10,Jquery 2.0,在花了几天的时间尝试了我在互联网上找到的许多解决方案之后,我感到非常高兴 在这里问 我有一个表单,当点击搜索按钮时,它会显示一个包含数据的表。该表有8列,我想在其中3列上添加一个文本输入,使用该输入应用带有列数据的筛选器。为了更好地了解我的需求,有以下几点 所以,我尝试了上述链接和的解决方案,但没有成功,也找不到我做错了什么 这是我的代码: <table id="EquipmentTable" class="table table-striped table-bordered bottom

在花了几天的时间尝试了我在互联网上找到的许多解决方案之后,我感到非常高兴 在这里问

我有一个表单,当点击搜索按钮时,它会显示一个包含数据的表。该表有8列,我想在其中3列上添加一个文本输入,使用该输入应用带有列数据的筛选器。为了更好地了解我的需求,有以下几点

所以,我尝试了上述链接和的解决方案,但没有成功,也找不到我做错了什么

这是我的代码:

<table id="EquipmentTable" class="table table-striped table-bordered bottom-buffer" width="100%">
    <thead>
        <tr>
            <th><input type="checkbox" name="select_all" value="1" id="checkAll" class="text-center" onclick="$.fn.backboneSearch.checkAllResult()"></th>
            <th>Equipement</th>
            <th>Famille d'équipement</th>
            <th>Gamme d'équipement</th>
            <th>Etat</th>
            <th>UI</th>
            <th>Site de stockage</th>
            <th>Salle technique</th>
            <th></th>
        </tr>
    </thead>
    <tfoot id="backboneSearchtfoot">
        <tr id="filterrow">
            <th></th>
            <th id="textFilter1" class="textFilter"></th>
            <th id="textFilter2" class="textFilter"></th>
            <th id="textFilter3" class="textFilter"></th>
            <th class="listFilter"></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
        </tr>
    </tfoot>
</table>

装备
凯佩门特家庭酒店
甘美·德奎佩蒙
埃塔特
用户界面
现场去库存
萨勒技术

//设置-向每个页脚单元格添加文本输入
$('#EquipmentTable tfoot th.textFilter')。每个(函数(i){
$(this.html(“”);
});
设备表=$(“#设备表”)。数据表({
aa数据:结果,
AO列:[
{mData:'标识符'},
{mData:'Mnemo'},
{mData:'FamGam.Family'},
{mData:'FamGam.Gamme'},
{mData:'dataState.Libelle'},
{mData:'IdentifierUI'},
{mData:'TechnicalRoom.InterventionUnitySenderSite'},
{mData:'IdentifierTechnicalRoom'},
],
是的,
过滤:错,
布雷特里夫:是的,
按钮:[{
类名:“btn警告”,
列:[1,2,3,4,5,6],
扩展:“excel”,
字段分隔符:“;”,
文本:“导出”
}],
dom:'Bfrtip',
语言:{/*不用于显示*/},
stateSave:没错,
b处理:true
});
$(equipmentTable.table().container()).on('keyup','tfoot th.textFilter input',函数(){
equipmentTable.column($(this).data('index'))
.search(此.value)
.draw();
});
aaData
使用的
result
是我在搜索Rest方法的ajax成功中得到的一个json。我使用该成功方法填充表格

所以我的问题是:我做错了什么或误解了什么? 我试图将对象
equipmentTable.column($(this.data('index'))).search(this.value)
与示例上返回的内容进行比较,并获得等效对象。这就是为什么我几乎可以肯定问题来自draw()方法

谢谢你的帮助。

这是工作指南

首先,您的搜索不起作用,因为您将bFilter设置为false。然后只需删除此行或将此参数设置为true:

bFilter: true,
但这还不够。用于绘制输入文本列的循环将不起作用,因为列索引从0开始。然后,如果在第二列设置第一列,并在第一个输入上搜索,则排序将在第0列上完成。然后我将+1添加到您的数据索引中:

$(equipmentTable.table().container()).on('keyup', 'tfoot tr th.textFilter input', function () {
    equipmentTable.column($(this).data('index') + 1)
                  .search(this.value)
                  .draw();
});

希望有帮助。

谢谢您的回答。我试过了,也遇到了同样的问题。myTable.column(colIdx.search)(this.value)返回的对象与my what my code返回的对象完全相同,但draw()似乎不起任何作用。在此之前,您可以尝试在事件委派keyup中添加tr吗
tfoot tr th.textFilter输入
我也尝试过tr,但没有成功。我做了一个JSFIDLE:好的,我知道了,我会更新我的答案并给你新的提琴哇!非常感谢你,它起作用了!我没想到bFilter会成为问题。
$(equipmentTable.table().container()).on('keyup', 'tfoot tr th.textFilter input', function () {
    equipmentTable.column($(this).data('index') + 1)
                  .search(this.value)
                  .draw();
});