2013-08-19 62 views
0

我在我的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); 

在我来说,我有一个包含BMISMTLABM值的列。现在,当我搜索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

是这个JavaScript? – shapeshifter

+0

你的javasrcipt。' – Mausumi

+0

那么为什么会有“php”标签? – Voitcus

回答

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); 
      } 
     }); 
0

使用自己的正则表达式,请记住以禁用至REGx和智能过滤

oSettings.aoPreSearchCols[ iColumn ], { 
     "sSearch": "^\\s*"+sInput+"\\s*$", 
     "bRegex": false, 
     "bSmart": false, 
     "bCaseInsensitive": false 
    }