2011-12-09 5 views
0

テーブルの検索ボックスを単純に並べ替えるのは難しいです。jQueryを使用したテーブルの大文字と小文字を区別しない検索ボックス

私は次のコードを持っている:

<input name="search" /> 
<table id="content"> 
    <tr class="item"> (...) </tr> 
    <tr class="item"> (...) </tr> 
</table> 

$(document).ready(function(){ 
    $('input[name="search"]').keydown(function(){ 
    $('tr.item:contains("' + $(this).val()+ '")').prependTo('#content'); 
}); 

これはうまく動作しますが、.contains()は、大文字と小文字が区別されます。

どのように大文字小文字を区別しないようにすることができますか?

私はネット上でこれを見つけた:

http://bugs.jquery.com/ticket/278#comment:4

http://ericphan.info/blog/2009/3/4/jquery-13-case-insensitive-contains.html

が、私は次のコードを追加するとき:

$.extend($.expr[":"], { 
    "containsIgnoreCase": function(elem, i, match, array) { 
    return (elem.textContent || elem.innerText || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; 
}}); 

を何も変えていないようにみえて、私の検索ボックスは、ケースのまま敏感な...

答えて

2

$を拡張してcontainsIgnoreCaseを追加した後は、コードにcontainsIgnoreCaseを使用する必要があります。これを試して。

$(document).ready(function(){ 
    $('input[name="search"]').keydown(function(){ 
    $('tr.item:containsIgnoreCase("' + $(this).val()+ '")').prependTo('#content'); 
}); 
+0

おかげでたくさん使います!これは素晴らしい作品です! 申し訳ありませんが私の質問があまりにも些細だったが、私はjQueryの拡張機能を使用したことがない。私は単純に元の.contains()関数がextenstionによって上書きされると考えました。それは私の間違いでした。 – lukeshek

+0

嬉しいことに、これを答えとしてマークすることをお手伝いしました。ありがとう – ShankarSangoli

0

この記事では、How do I make jQuery Contains case insensitive, including jQuery 1.8+?という回答を見つけることができます。簡単にするために私はここにあなたのためのソリューションをコピー&ペーストします、

jQuery.expr[':'].Contains = function(a, i, m) { 
    return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0; 
}; 
関連する問題