0

我在我的 php 代码中使用数据表通过选择框过滤列。在 jquery.dataTables.js 中,有一段代码如下:

/* Single column filter */
$.extend( oSettings.aoPreSearchCols[ iColumn ], {
    "sSearch": sInput+"",
    "bRegex": bRegex,
    "bSmart": bSmart,
    "bCaseInsensitive": bCaseInsensitive
} );
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );

在我的例子中,我有一列包含BM,和values 。现在,每当我搜索列时,我都会得到记录。但它应该只是记录。我已将上面的代码修改为:ISMTLABMBMBMABMBM

/* Single column filter */
    $.extend( oSettings.aoPreSearchCols[ iColumn ], {
        "sSearch": sInput+"",
        "bRegex": false,
        "bSmart": false,
        "bCaseInsensitive": false
    } );
    _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );

但它仍然无法正常工作。所以请帮助我如何做到这一点。提前致谢。

4

2 回答 2

0

使用你自己的正则表达式,记得禁用 regx 和智能过滤

oSettings.aoPreSearchCols[ iColumn ], {
        "sSearch": "^\\s*"+sInput+"\\s*$",
        "bRegex": false,
        "bSmart": false,
        "bCaseInsensitive": false
    } 
于 2013-08-19T09:09:53.300 回答
0

而不是在 jquery.dataTables.js 中进行更改,而是在声明和定义数据表的页面中进行更改。改成

$('select', this).change( function () {
            if($(this).val() != ''){
                oTable.fnFilter( "(^|\s)"+$(this).val()+"(\s|$)", i ,true); //filter exact word
            }else{
                oTable.fnFilter( $(this).val(), i); 
            }
        });
于 2013-08-19T08:34:26.470 回答