我正在使用 jquery datatables 插件,发现 here 。有两个名为“New GL”和“Old GL”的列。数据表插件有一个名为搜索的内置功能,它可以根据您在文本框中输入的关键字过滤表中的数据。
当我在我想要的文本框中输入“40.88.1010.0”或“40.88.600000.05”时 这条记录才会出现。
相同的规则适用于所有记录。我希望搜索继续使用一个文本框过滤所有列,但对于“New GL”和“Old GL”列...我希望用户能够同时使用“-”和“.”。字符。
我最初的想法是,如果数据表有正则表达式选项,它就会起作用,因为“。”正则表达式中是任何字符。但我只想将规则应用于这两列。
使用数据表插件可以做到这一点吗?
这是我当前的数据表初始化代码:
$(document).ready(function () {
var table = $('#datatable').DataTable({ "iDisplayLength": 50 });
});
最佳答案
SOLUTION
您需要实现如下所示的自定义搜索功能。
此方法的缺点是其他列中的内容也会以相同的方式进行搜索,即使用 .
或 -
字符进行搜索。
$(document).ready(function () {
var table = $('#datatable').DataTable({
"pageLength": 50
});
$('.dataTables_filter input', table.table().container())
.off('.DT')
.on('keyup.DT cut.DT paste.DT input.DT search.DT', function (e) {
// If the length is 3 or more characters, or the user pressed ENTER, search
if(this.value.length > 0){
// Escape the expression so we can perform a regex match
var val = $.fn.dataTable.util.escapeRegex(this.value);
// Add regular expression to match both . and - characters
val = val.replace(/(\\\-|\\\.)/g, "[\\\.\\\-]");
// Call the API search function
table.search(val, true, false).draw();
} else {
// Ensure we clear the search if they backspace far enough
table.search("").draw();
}
});
});
DEMO
参见this jsFiddle用于代码和演示。
关于javascript - 自定义 jquery.datatables 插件以使用正则表达式对两列进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620183/