2016-07-22 14 views
1

私はPhoenix Webアプリケーションで作業していますが、検索を指し示すナビゲーションバーにあるグローバル検索ボックスを実装する方法を見つけようとしていますDataTablesで構築された/usersにあるテーブル今のように、検索バーで検索を送信すると/usersにリダイレクトされますが、検索はテーブルに適用されません。Phoenix - DataTableを使用したサイト全体の検索機能

app.html.eex(レイアウト):

<form id="custom-search-input" class="nav navbar-nav pull-right" action="/users"> 
    <div class="input-group"> 
    <input id="ee-search" type="text" name="search" class="form-control" placeholder="Employee Search" /> 
    <span class="input-group-btn"> 
     <button class="btn btn-info"> 
     <i class="fa fa-search"></i> 
     </button> 
    </span> 
    </div> 
</form> 

app.js:

$(document).ready(function() { 
    $('#employeeTable').DataTable(); 
}); 

var table = $('#employeeTable').DataTable({ 
    "lengthMenu": [ [15, 50, 75, 150, -1], [15, 50, 75, 150, "All"] ] 
}); 

私はapp.jsに配置されたDataTableのAPIでこれを見つけた:

$('#ee-search').on('keyup', function() { 
    table.search(this.value).draw(); 
}); 

私は前もってお詫びします...私のjavascriptのスキルは事実上存在しません。検索入力をDataTableに適用するにはどうすればよいですか?私は、フォーム提出/ JavaScriptコード/ DataTableをリンクする方法があると仮定しますか?さらに詳しい情報やコードが必要な場合は、私にお知らせください。ありがとう!

+0

あなたの 'key'ハンドラがどこにそれを見ることができるのかを定義しておけば、' table'変数を参照できるはずです。 table.search行にブレークポイントを設定し、テーブルを評価して未定義であるかどうかを確認することができます。私の経験上、javascriptを学ぶことは、部分的には構文を調べることと、実際には何があるかを見るためにDOMオブジェクトを歩き回ることの問題です。 – BobRodes

+0

私はあなたの質問を明確に最後の投稿を理解していない可能性があります。ユーザーがフィルタ処理した結果を表示するテーブルとは別のページに入力する検索ボックスですか? – BobRodes

+0

@BobRodesはい検索ボックスはどこからでもアクセスできる静的なナビゲーションバーにあります。 '/ users'ページは基本的に従業員のディレクトリです。サイトのどこからでもアクセスできるようにしようとしています。 – jsonkenl

答えて

1

サーバーへの往復をせずに、1つのページから別のページにデータを渡す3つの方法があります。ローカルストレージ内のデータ、Cookie、およびセッション変数を取得します。これらのうち、私はGETデータを使用することから始めます。

this question(これは多くの例の1つで、)は、GETメカニズムを使用してあるページから別のページにデータを渡す方法を説明しています。基本的には、フォームの属性にmethod="GET"を追加して、\usersページから結果のクエリ文字列を解析する必要があります。

はその後、検索を実行するために、ちょうどそう、引数としてあなた解析された文字列を渡し、search()メソッドを呼び出し、draw()メソッドを呼び出します。

myTable.search(myTextString).draw(); 

のDataTableには検索用語を適用すると、フィルタ結果を表示し、テーブルを再描画します。

+0

助けてくれてありがとう!私はGET paramsを解析し、 '/ users'ページの検索ボックスの値として入力しますが、検索は実行しません。実際に検索を送信するjQueryに追加する必要があるいくつかの追加コードはありますか? .submit()を追加しようとしましたが、動作していないようです。 – jsonkenl

+0

検索基準を適用するには、 'filter()'メソッドを使用する必要があります。申し訳ありませんが、私はそれを逃しました。ただ、テキストを差し込むだけでフィルタが適用されると思っていました。私の投稿を編集しました。 – BobRodes

+0

'filter()'でどこを見ていたのか分かりますが、 'search()'メソッドは私が探していた結果を提供しました。私はこれを反映するためにあなたの答えを更新しました。助けてくれてありがとう! – jsonkenl

関連する問題