tablesorterフィルタを使用して姓の列をフィルタリングできます。フィルターは、各名前の最初の文字から始まるものだけ一致させる必要があります。jquery tablesorterフィルタを使用して列のテキストの先頭をフィルタリングする
ギルバート
バギンズが
ゴッドフリー
フィルタテキストだけの「G」だった場合、私はこの結果をしたいだけだろう:
たとえば、あなたは、次の3つの名前を持っていたとしましょうギルバート
ゴッドフリー
そしてBagginsのどちらのgsとも一致しません。
いくつかのより多くの.tablesorterFilterのソースコードを勉強した後、私はそれを行う方法を見つけ出すことができました。
3つのパラメータを渡す関数を作成する必要があります。最初のパラメータは、HTML要素の内容です。 2番目のパラメータは、ユーザがフィルタコンテナに入力した単語の文字列配列です。 3番目のパラメータは、大文字と小文字の区別のためのブール値です。 .tablesorterFilter filterFunctionでこの関数への参照を渡します。私は.tablesorterFilterのデフォルトのhas_words関数をコピーして貼り付け、探している機能を提供するように変更しました。私はそれをfilterbyfirstcolumnという名前にし、filterFunctionとしてその参照を渡しました。
ここに私のプログラムから適切なコードスニペットです:
function filterbyfirstcolumn(str, words, caseSensitive) {
var text = caseSensitive ? str : str.toLowerCase();
var allwords = "";
for (var i=0; i < words.length; i++) {
allwords += words[i];
if (i != words.length - 1)
allwords += " ";
}
if (text.indexOf(allwords) != 0)
return false;
return true;
}
$("#tblSearchContacts")
.tablesorter({debug: false, widgets: ["zebra"],
headers: {
0: { sorter: false },
4: { sorter: false },
5: { sorter: false },
6: { sorter: false },
7: { sorter: false },
8: { sorter: false }
},
sortList: [[1,0]]})
.tablesorterPager({ container: $("#pagerOne"), positionFixed: false, size : 20 })
.tablesorterFilter({filterContainer: $("#txtFilter"),
filterClearContainer: $("#btnClear"),
filterColumns: [3],
filterCaseSensitive: false,
filterFunction: filterbyfirstcolumn});`
うまくいけば、他の人はこれが役に立つかもしれません。同様のテクニックを使用すると、フィルタを使ってあらゆる種類の素敵なことを行うことができます。
私はちょうど解決策を探してGoogleを試したし、運がなかった。 filterFunctionは私が使用する必要があるかもしれませんが、実際に使用方法を説明するものは何も見つかりません。私はjavascriptとjqueryの新機能ですので、プラグインのコーディング方法はまだ分かりません。ソースコードを調べることで、これまでの啓示は得られていません。あなたはこれが一般的なリクエストであり、見つけるのは簡単な解決策だと思っていますが、たぶん私は正しい場所を探しているだけではありません。 :( – Mark
[documentation](http://tablesorter.com/docs/index.html#Examples) – Andrew