我在我的php代码中使用数据表来使用selectbox过滤列。在jquery.dataTables.js中,有一段代码:
/* Single column filter */
$.extend( oSettings.aoPreSearchCols[ iColumn ], {
"sSearch": sInput+"",
"bRegex": bRegex,
"bSmart": bSmart,
"bCaseInsensitive": bCaseInsensitive
} );
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
就我而言,我的列中包含BM
,ISM
,TL
和ABM
值。现在每当我按BM
搜索列时,我都会收到BM
条和ABM
条记录。但它应该只有BM
条记录。
我已将上述代码修改为:
/* Single column filter */
$.extend( oSettings.aoPreSearchCols[ iColumn ], {
"sSearch": sInput+"",
"bRegex": false,
"bSmart": false,
"bCaseInsensitive": false
} );
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
但它仍然没有用。所以请帮我怎么做。 提前谢谢。
答案 0 :(得分: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);
}
});
答案 1 :(得分:0)
使用您自己的正则表达式,请记住禁用regx和智能过滤
oSettings.aoPreSearchCols[ iColumn ], {
"sSearch": "^\\s*"+sInput+"\\s*$",
"bRegex": false,
"bSmart": false,
"bCaseInsensitive": false
}