带有自定义搜索栏的jQuery数据表

时间:2016-12-02 07:44:44

标签: javascript jquery html5 datatables

我正在尝试使用一个搜索栏和名为“描述”的列中的另一个搜索栏搜索“部件号”和“内部参考”列:

enter image description here

到目前为止,我正在尝试使用html:

...
<th class="code">Part Number</th>
<th class="keyword">Description</th>
<th class="code">Internal Reference</th>
...

这是在.js:

$('#keyword-search').keyup(function() {
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
    oTable.columns('.keyword').search('^' + val, true, false).draw();
});

$('#code-search').keyup(function() {
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
    oTable.columns('.code').search('^' + val, true, false).draw();
});

我希望能够在“部件号”或“参考”列中搜索,但不能同时搜索两者,只是为了显示第一列或第二列中表达式所在的列。

我需要解决这个问题,我尝试了不同的方法,但我找不到解决方案。

编辑1:我想要这样的最终结果:

enter image description here

但是搜索不起作用,没有最终的过滤结果,两列之间存在冲突,因为它在“零件编号”列和“内部参考”列中同时搜索“NUM1” 。我的意思是代码正在进行 AND 搜索,而不是 OR 搜索,这就是我想要的。

1 个答案:

答案 0 :(得分:1)

有些事情应该有效:

    $('#keyword-search').keyup(function() {
        var searchText = $(this).val().toLowerCase();
        $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
        //Assuming part number and internal reference are 1st and 3rd columns
        if((~data[0].toLowerCase().indexOf(searchText)) || (~data[2].toLowerCase().indexOf(searchText))) {
          return true;
        }
        return false;
    }

检查thisthis