【问题标题】:jquery filtering case insensitivejquery过滤大小写不敏感
【发布时间】:2016-05-30 14:09:30
【问题描述】:
我找到了这个过滤脚本:
jsfiddle.net/Zhd2X/574/
尝试在第一个表中按 f 和 F - 列布尔值。在原始版本中,示例仅适用于 f 但我在第 1 行添加了 .toLowerCase()。 17.
但是,当您在第二个表中按 g 或 G - 列专业时,我的第一次更新无法过滤。我必须更改行号。 18,但我不知道...
【问题讨论】:
标签:
jquery
find
filtering
【解决方案1】:
您需要在过滤之前将<td>s 的文本设为小写。目前您只是将过滤器输入的值设为小写。
var criteria = this.value.toLowerCase();
table.find(el).filter(function(_, td) {
return $(td).text().toLowerCase().indexOf(criteria) == -1;
}).parent().hide();
【解决方案2】:
您应该通过将以下代码添加到您的脚本中来创建:contains JQuery 选择器的不区分大小写的变体。我将其命名为casecontains。
jQuery.expr[':'].casecontains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};
之后,您可以将 17 行替换为以下内容:
var criteria = ":casecontains('"+$(this).val()+"')";
请注意,我刚刚将 :contains 替换为 :casecontains。此外,不再需要转换为小写。
Your updated fiddle.