使用jQuery非大小写敏感搜索表行

时间:2013-03-26 17:03:11

标签: javascript php jquery html-table

我正在尝试这个漂亮的小jQuery脚本来搜索这里找到的表:

Searching table rows with jQuery

它工作得很好但是我不希望它区分大小写,例如,如果我的表中的值是Value One,我希望能够搜索值1或VALUE ONE并仍然得到正确的结果

这是控制它的Jquery:

<script>
$(document).ready(function(){
$('input[name="search"]').keyup(function(){
  var searchterm = $(this).val();
  if(searchterm.length > 3) {
   var match = $('tr.data-row:contains("' + searchterm + '")');
   var nomatch = $('tr.data-row:not(:contains("' + searchterm + '"))');
   match.addClass('selected');
   nomatch.css("display", "none");
  } else {
   $('tr.data-row').css("display", "");
   $('tr.data-row').removeClass('selected');
  }
});
});
</script>

任何人都可以帮助我使其不区分大小写吗?

3 个答案:

答案 0 :(得分:0)

您可以使用toLowerCase()方法将两个字符串转换为小写。

看起来应该是这样的:

$(document).ready(function(){
$('input[name="search"]').keyup(function(){
  var searchterm = $(this).val();
  searchterm=searchterm.toLowerCase();  
  if(searchterm.length > 3) {
   var match = $('tr.data-row:contains("' + searchterm + '")');
   var nomatch = $('tr.data-row:not(:contains("' + searchterm + '"))');
   match.addClass('selected');
   nomatch.css("display", "none");
  } else {
   $('tr.data-row').css("display", "");
   $('tr.data-row').removeClass('selected');
  }
});
});

您还需要覆盖jQuery方法!看起来像这样......

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toLowerCase().indexOf(arg.toLowerCase()) >= 0;
    };
});

这很简单,你所做的就是在比较它们之前强制两个字符串都是小写字母。这样就可以跳过不同的案例问题。

希望这会有所帮助,祝你好运。

答案 1 :(得分:-1)

你最好的选择可能就是编写自己的选择器表达式:

$.expr[":"].containsCI = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

答案 2 :(得分:-2)

您可以在此处找到解决方案:Link,这将覆盖原始的“:contains”选择器

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});