2012-02-23 7 views
4

フィルタ入力をJquery Mobile search filterに変更して、入力フィールドを消去するための削除ボタンも含まれています。"クリア"ボタンをクリックしてフィルタをクリアした後にデータテーブルをリフレッシュする方法

これは、削除をクリックすると入力フィールドがクリアされるが、テーブルは更新されないため、半角でしか機能しません。

_fnFeatureHtmlFilter機能の中で私のカスタム削除ボタンをクリックすると、テーブルをリフレッシュする方法に関するヒントを探していますか?

以下のコードは、JQM検索を設定する方法を示しています。しかし、質問に答えるのに役立つとは思わない...

/* jqm search input */ 
    sSearchStr = oSettings.oInit.bJQueryMobileUI == true ? '<input placeholder="Filtern" data-type="search" data-theme="'+DataTable.ext.oJQMthemes.wrapperTheme+'" />' : 
     ((sSearchStr.indexOf('_INPUT_') !== -1) ? 
      sSearchStr.replace('_INPUT_', '<input type="text" />') : 
       sSearchStr==="" ? '<input type="text" />' : sSearchStr+' <input type="text" />'); 
    var nFilter = document.createElement('div'); 
    /* jqm wrapper classes */ 
    nFilter.className = oSettings.oInit.bJQueryMobileUI == true ? "ui-block-c "+oSettings.oClasses.sFilter : oSettings.oClasses.sFilter; 
    oSettings.oInit.bJQueryMobileUI == true ? $(nFilter).html(sSearchStr) : $(nFilter).html('<label>'+sSearchStr+'</label>'); 

ありがとうございました!

$('.dataTables_filter .ui-input-clear').live('click', function(e) {  
     jqFilter.val(""); 
     jqFilter.trigger('keyup.DT'); 
     }); 

これは、クリアボタンに結合する:

答えて

9

は解決策を見つけました。だから、クリックすると入力値を手動で設定しています。なぜなら、JQMクリアボタンは入力そのものをクリアするようには見えないからです。

クリアされた入力では、入力上でキーアップをトリガーします。これにより、通常のdataTablesルーチンが起動し、fnFilter関数が呼び出されます。これは、jqFilter.valueが以前の検索語と一致しないためです。 jqFilterが空であるためfnFilterは再びテーブル全体を表示します。

多分他の誰かにとっても役に立ちます。

+1

を。私はそれを信じることができませんが、はい。ありがとう! datatablesプラグインにJSを介して検索/フィルタを適切に制御する方法がないのは残念です。 –

5

あなたがプログラム的に空の文字列を検索するためのDataTableのAPIを尋ねることによって、フィルタをクリアすることができます。

$('#myTable').dataTable().fnFilter('');

またはすでにオブジェクト参照がある場合:だから気に有用

oMyTable.fnFilter('');

+0

すべての寄稿者に感謝しますが、私は実際にこの答えをより簡潔に、そして要点に見出しています。 – mtchuente