Jquery 使用datatable中带有复选框的多选下拉列表为列应用筛选器

Jquery 使用datatable中带有复选框的多选下拉列表为列应用筛选器,jquery,datatables,bootstrap-multiselect,Jquery,Datatables,Bootstrap Multiselect,我的问题是基于这个原始的小提琴: 这是我正在寻找的一种例子。 但我的问题是,如果任何值都有特殊字符(比如圆括号),那么示例就不起作用 这是我的代码-几乎类似于原始链接 $('#dropdown').multiselect({ onChange: function(element, checked) { var cities = $('#dropdown option:selected'); var selected = []; $(citi

我的问题是基于这个原始的小提琴:

这是我正在寻找的一种例子。 但我的问题是,如果任何值都有特殊字符(比如圆括号),那么示例就不起作用

这是我的代码-几乎类似于原始链接

    $('#dropdown').multiselect({
    onChange: function(element, checked) {

      var cities = $('#dropdown option:selected');

      var selected = [];
      $(cities).each(function(index, city) {
        selected.push([$(this).val()]);
      });

      var regex = selected.join("|");

      $('#table').DataTable().column(1).search(
        regex, true, false, true
      ).draw();
    }
  });
}); 
-由我编辑的小提琴

现在,如果您选择“(巴黎)法国”,它不会显示任何结果,尽管在表中有记录

(通过更改搜索(regax、true、false、true)进行尝试)-但不起作用

如果您选择“巴黎”,它将显示与“巴黎”相关的两条记录-根据我的判断,这是错误的。当从下拉列表中选择值时,它应显示准确的结果

尝试选择带有和不带特殊字符的多个值-结果很奇怪


如果需要进一步澄清,请告知我。

如果希望正则表达式与精确字符串匹配,则必须使用
^
$
字符封装搜索字符串。如果字符串必须与精确字符串匹配,则可以禁用
搜索
方法中的
智能
选项。

条目(Paris)France有两个问题。在您的示例中,您正在推送设置为Paris_France的
选项
元素的值,但在您的表中,要查找的条目仍然是(Paris)France,因此您应该更改该值。 第二个问题是<代码>()是Regex中的一个特殊字符,您应该在这种情况下逃脱,在添加值:

时,考虑类似的情况。
selected.push(['^('+$(this).val().replace(/[-\/\\\^$*+?。()[\]{}]/g,'\\$&')+')$);


我已经用我建议的更改编辑了您的字符串。

如果您希望正则表达式与确切的字符串匹配,则必须用
^
$
字符封装搜索字符串。如果字符串必须与确切的字符串匹配,则可以禁用
搜索
方法中的
智能
选项

条目(Paris)France有两个问题。在您的示例中,您正在推送设置为Paris_France的
选项
元素的值,但在您的表中,要查找的条目仍然是(Paris)France,因此您应该更改该值。 第二个问题是<代码>()是Regex中的一个特殊字符,您应该在这种情况下逃脱,在添加值:

时,考虑类似的情况。
selected.push(['^('+$(this).val().replace(/[-\/\\\^$*+?。()[\]{}]/g,'\\$&')+')$);


我已经用我建议的更改编辑了你的。谢谢你。解决了问题。干杯!问题是,我无法应用正确的正则表达式部分。再次感谢。还有一件事。提供的解决方案在chrome和mozilla中运行良好。但是,当“破折号/连字符”前后有空格时,相同的正则表达式在IE 11中不起作用。我正在使用IE 11,版本11.674.15063。我尝试过修改正则表达式。也尝试过使用“\s”。但在IE11中不起作用。是否有人可以提供帮助?例如:ABCD-WXYZ(在chrome中工作),ABCD-WXYZ(在chrome中工作)。ABCD-WXYZ(在IE11中工作)。但是,ABCD-WXYZ(在IE11中不工作)@ Ty-Gek考虑用一个可重复的例子问一个新的问题。BTW:我已经用IE 11测试了它,它似乎起作用。谢谢Shiffty。解决了问题。干杯……!问题是,我不能应用适当的正则表达式部分。再次感谢。还有一件事。提供的解决方案在铬和Mozilla中工作得很好。但是,同样的正则表达式不起作用。当“破折号/连字符”前后都有空格时,IE 11。我使用的是IE 11,版本11.674.15063。我尝试过修改正则表达式。也尝试过使用“\s”。但在IE11中不起作用。有人能帮忙吗?例如:ABCD-WXYZ(在chrome中起作用),ABCD-WXYZ(在chrome中起作用)。ABCD-WXYZ(在IE11中起作用)。但是,ABCD-WXYZ(在IE11中不起作用)THY-GEEK考虑用一个可重复的例子来问一个新问题。BTW:我已经用IE 11测试过了,它似乎起作用了。