0

jqueryデータテーブルを使用してテーブルをフィルタリングするために使用される複数の選択メニューがあります。

私が使用する次のコードは見事に機能しますが、この例では 3 つの選択メニューしか使用していません。私は今、10以上を使用するテーブルを持っています.

これを記述するより良い方法はありますか?マッチのすべてのバリエーションを記述する必要はありません。

//アップデート

選択変数とテーブルデータ列変数を配列に入れた場合、それらを反復処理できます。

$.fn.dataTableExt.afnFiltering.push(
    function( oSettings, aData, iDataIndex ) {
          if ( oSettings.nTable == document.getElementById( 'logtable' ))
          {

          var nature_of_complaint = document.getElementById('nature_of_complaint_select').value;
          var division = document.getElementById('division_select').value;
          var resolved = document.getElementById('resolved_select').value;

          var tabledata_nature_of_complaint = aData[22];
          var tabledata_division = aData[12];
          var tabledata_resolved = aData[26];

          if (nature_of_complaint == "" && division == "" && resolved == "")
          {  return true;  }
          else if (tabledata_division == division && nature_of_complaint == "" && resolved == "")
          {  return true;  }
          else if (tabledata_nature_of_complaint == nature_of_complaint && division == "" && resolved == "")
          {  return true;  }
          else if (tabledata_resolved == resolved && division == "" && nature_of_complaint == "")
          {  return true;  }
          else if (tabledata_nature_of_complaint == nature_of_complaint && tabledata_division == division && resolved == "")
          {  return true;  }
          else if (tabledata_division == division && tabledata_resolved == resolved && nature_of_complaint == "")
          {  return true;  }
          else if (tabledata_resolved == resolved && tabledata_nature_of_complaint == nature_of_complaint && division == "")
          {  return true;  }
          else if (tabledata_nature_of_complaint == nature_of_complaint && tabledata_division == division && tabledata_resolved == resolved)
          {  return true;  }
          return false;
          } else
          return true;
    }
);
4

1 に答える 1

0

このチュートリアルを使用してそれを理解しました。

http://www.flynsarmy.com/2011/12/save-custom-filter-state-jquery-data-tables/

各選択に「dtable_filter」のクラスを追加するだけです。

削減されたコードは次のとおりです。

$.fn.dataTableExt.afnFiltering = new Array();
    var oControls = $('#adv_search_filters').find(':input[name]');
    oControls.each(function() {
        var oControl = $(this);

        //Add custom filters
        $.fn.dataTableExt.afnFiltering.push(function( oSettings, aData, iDataIndex ) {
            if ( !oControl.val() || !oControl.hasClass('dtable_filter') ) return true;

            for ( i=0; i<aData.length; i++ )
                if ( aData[i].indexOf(oControl.val()) != -1 )
                    return true;

            return false;
        });
    });
于 2013-08-15T15:43:38.210 に答える