我有这个javascript(下面的JSFiddle):
$(document).ready(function() {
var table = $('#example').DataTable();
$('input[type="checkbox"]').on('change', function() {
console.log($(this).attr("id"), this.checked)
var choosedString = "";
if ($('#A').prop('checked')) {
choosedString = "A"
}
if ($('#Aplus').prop('checked')) {
choosedString += choosedString.length > 0 ? "|" : "";
choosedString += "A\\+"
}
console.log(table)
table.column(3).search(choosedString, true, false).draw();
});
});
这里是JSFIDDLE
我需要通过2个复选框从表格中选择“ A”和/或“ A +”值。我想出了如何选择“ A +”,但是当我尝试选择“ A”时,选择中还包括了A +。如何滤除特殊字符?谢谢。
答案 0 :(得分:2)
您已经在这里使用search
方法的正则表达式模式-但问题在于,A
作为“正则表达式”当然仍然匹配包含{{ 1}} 任何地方,并且不再对其进行进一步限制。
如果在开始和结束时使用A
和^
锚定这些表达式,那么您应该能够得到想要的:
$
答案 1 :(得分:2)
您可以使用^
和$
锚点来匹配字符串的开头和结尾:
$(document).ready(function() {
var table = $('#example').DataTable();
$('input[type="checkbox"]').on('change', function() {
console.log($(this).attr("id"), this.checked)
var choosedString = "";
if ($('#A').prop('checked')) {
choosedString = "^A$"; // Modified here
}
if ($('#Aplus').prop('checked')) {
choosedString += choosedString.length > 0 ? "|" : "";
choosedString += "A\\+"
}
console.log(table)
table.column(3).search(choosedString, true, false).draw();
});
});
正在工作的小提琴(仅使用$
):https://jsfiddle.net/10uhwapv/96/
希望有帮助。
答案 2 :(得分:1)
您需要更改此行
table.column(3).search(choosedString, true, false).draw();
到
table.column(3).search("^" + choosedString + "$", true, false).draw();
然后您可以按完全匹配A或A +过滤表格。您可以查看演示here