Javascript 自定义jquery.datatables插件以在两列上使用正则表达式进行筛选
我正在使用找到的jquery datatables插件。有两列,分别命名为“新总账”和“旧总账”。datatables插件有一个名为search的内置功能,它根据您在文本框中输入的关键字过滤表中的数据 以下是我的数据当前的样子: 当我在想要的文本框中键入“40.88.1010.0”或“40.88.600000.05”时 此记录将显示。 同样的规则适用于所有记录。我希望搜索继续使用单个文本框过滤所有列,但对于“New GL”和“Old GL”列,我希望用户能够同时使用“-”和“.”字符 我最初的想法是,如果datatables有一个regex选项,它就会工作,因为regex中的“.”是任意字符。但我只希望规则适用于这两列 使用datatables插件可以做到这一点吗 以下是我当前的数据表初始化代码:Javascript 自定义jquery.datatables插件以在两列上使用正则表达式进行筛选,javascript,jquery,regex,datatables,Javascript,Jquery,Regex,Datatables,我正在使用找到的jquery datatables插件。有两列,分别命名为“新总账”和“旧总账”。datatables插件有一个名为search的内置功能,它根据您在文本框中输入的关键字过滤表中的数据 以下是我的数据当前的样子: 当我在想要的文本框中键入“40.88.1010.0”或“40.88.600000.05”时 此记录将显示。 同样的规则适用于所有记录。我希望搜索继续使用单个文本框过滤所有列,但对于“New GL”和“Old GL”列,我希望用户能够同时使用“-”和“.”字符 我最初
$(document).ready(function () {
var table = $('#datatable').DataTable({ "iDisplayLength": 50 });
});
您可以添加
数据搜索
属性。
然后,您的行将变成这样:
<tr>
<td data-search="40.88.1010.0">40-88-1010-0</td>
<td data-search="40.88.600000.05">40-88600000-05</td>
</tr>
40-88-1010-0
40-88600000-05
默认情况下,Datatables的筛选使用所有行中的数据
解决方案
您需要实现如下所示的自定义搜索功能
此方法的缺点是,其他列中的内容也将以相同的方式进行搜索,即使用
或-
字符进行搜索
$(文档).ready(函数(){
var table=$('#datatable')。datatable({
“页面长度”:50
});
$('.dataTables_筛选器输入',table.table().container())
.off(“.DT”)
.on('keyup.DT cut.DT paste.DT input.DT search.DT',函数(e){
//如果长度为3个或更多字符,或用户按ENTER键,则搜索
如果(this.value.length>0){
//转义表达式,以便执行正则表达式匹配
var val=$.fn.dataTable.util.escapeRegex(this.value);
//添加正则表达式以匹配.和-字符
val=val.replace(/(\\-\\\\)/g,“[\\\.\\-]”;
//调用API搜索函数
table.search(val,true,false).draw();
}否则{
//如果他们退格足够远,确保我们清除搜索
table.search(“”.draw();
}
});
});
演示
有关代码和演示,请参见。有关
新GL
:[-0-9]{15}
这是一个数字或破折号正好15次。您希望用户能够搜索其他列还是这两列?@Gyrocode.com我希望用户能够搜索所有列。您能显示您的DataTables初始化代码吗?@Gyrocode.com当然,我已将代码添加到我的帖子中。@user3788671,但是使用此解决方案,您将无法使用-
搜索。@Gyrocode.com我没有对其进行足够的测试。我原以为它行得通,但当我把整个数字打出来时就不行了。