Javascript 如何将Select2标记与DataTables正则表达式过滤结合起来?
我正在尝试使用正则表达式过滤器过滤通过Select2标记界面输入的关键字/标记的jquery DataTables表,以便我可以根据或代替精确匹配进行过滤 我正在初始化数据表,将分隔符设置为pipe |(regex或),但它仍然在输入的value属性中用逗号分隔标记Javascript 如何将Select2标记与DataTables正则表达式过滤结合起来?,javascript,jquery,regex,datatables,jquery-select2,Javascript,Jquery,Regex,Datatables,Jquery Select2,我正在尝试使用正则表达式过滤器过滤通过Select2标记界面输入的关键字/标记的jquery DataTables表,以便我可以根据或代替精确匹配进行过滤 我正在初始化数据表,将分隔符设置为pipe |(regex或),但它仍然在输入的value属性中用逗号分隔标记 jQuery('#programs-table').dataTable({ "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<
jQuery('#programs-table').dataTable({
"sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
"bPaginate": false,
"separator": "|"
});
jQuery("#program-filter-keyword").change( fnFilterGlobal );
在我看来,我有两个选择:
谢谢。到目前为止,我已经找到了一种方法,可以在我测试过的所有用例中使用 我基本上绕过了Select2传递给隐藏输入字段的值,因为它会弄乱逗号,因为“separator”选项实际上没有更改标记模式的分隔符(它只适用于多选输入) 以下是过滤功能:
function fnFilterGlobal () {
var tags = [];
jQuery("#s2id_program-filter-keyword .select2-search-choice div").each(function() {
tags.push(jQuery(this).text());
});
jQuery('#programs-table').dataTable().fnFilter(
tags.join("|").replace(/ /g,"\\ "), null, true, false
);
}
我正在通过解析Select2创建的
列表并从
内容中提取标签值来构建所选标签的数组
然后,对于实际的过滤器字符串,我将数组项与OR功能的管道符号连接起来,并将所有空格替换为\
(转义空格)
最后,我将“smart filter”选项设置为false
-这是关键,否则它将尝试将筛选器字符串转换为一个复杂的正则表达式,我已经将其设置为一个,转义的空格会导致无效的正则表达式错误
我已经更新了代码笔,因此您可以看到如何使用Select2和DataTables创建多标记或可筛选的表
function fnFilterGlobal () {
var tags = [];
jQuery("#s2id_program-filter-keyword .select2-search-choice div").each(function() {
tags.push(jQuery(this).text());
});
jQuery('#programs-table').dataTable().fnFilter(
tags.join("|").replace(/ /g,"\\ "), null, true, false
);
}