0

ここにあるテーブルを検索するためのこの素敵な小さなjQueryスクリプトを試しています:

jQuery を使用したテーブル行の検索

うまく機能しますが、大文字と小文字を区別したくありません。たとえば、テーブルの値が値 1 の場合、値 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>

大文字と小文字を区別しないようにするのを手伝ってくれる人はいますか?

4

3 に答える 3

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;
    };
});

比較する前に両方の文字列を強制的に小文字にするだけです。そうすれば、さまざまなケースの問題をスキップできます。

これが役に立てば幸いです。幸運を祈ります。

于 2013-03-26T17:11:27.537 に答える
-1

あなたの最善の最善の方法は、次のように独自のセレクター式を書くことです。

$.expr[":"].containsCI = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});
于 2013-03-26T17:11:01.580 に答える
-2

ここで解決策を見つけることができます: Link、これは元の「:contains」セレクターをオーバーライドします

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
    return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
于 2013-03-26T17:06:54.260 に答える