2017-01-03 2 views
0

日付範囲で検索する問題があります。 私は日付も持っていますので、範囲を検索すると見つからない場合があります。 しかし、私は時間を削除します。それは働いており、日付範囲を見つけることができます。データテーブルは日付で検索できません

私もしようと試みはcolspan = "2" が、その与えるエラー:

Cannot set property '_DT_CellIndex' of undefined

マイコード: https://jsfiddle.net/yerz2dg2/

$(document).ready(function() { 

      $.fn.dataTable.ext.search.push(
       function (settings, data, dataIndex) { 
        var min = $('#min').datepicker("getDate"); 
        var max = $('#max').datepicker("getDate"); 
        var d = data[4].split("/"); 
        var startDate = new Date(d[1]+ "/" + d[0] +"/" + d[2]); 

        if (min == null && max == null) { return true; } 
        if (min == null && startDate <= max) { return true;} 
        if(max == null && startDate >= min) {return true;} 
        if (startDate <= max && startDate >= min) { return true; } 
        return false; 
       } 
      ); 


      $("#min").datepicker({ onSelect: function() { oTable.draw(); }, changeMonth: true, changeYear: true , dateFormat:"dd/mm/yy"}); 
      $("#max").datepicker({ onSelect: function() { oTable.draw(); }, changeMonth: true, changeYear: true, dateFormat:"dd/mm/yy" }); 
      var oTable = $('#sort').DataTable(); 
      $('#min, #max').change(function() { 
       oTable.draw(); 
      }); 
     }); 

はまた、この方法は、時間のためにCOLSPAN、余分なTDタグを追加しようと試み

しかし、それは私が上で述べたものです。

答えて

1

JSFiddleには、使用しているライブラリへの参照がないため(datepicker)、元のコードで何が起こっているのか分かりません。しかし、私はそれをほんの少しを書き換えたのだが、今で動作するはずです:

JSFiddle作業
$(document).ready(function() { 
    var oTable = $('#sort').DataTable({ 
     initComplete: function() { 
      $("#min").datepicker({ 
       onSelect: function() { 
        oTable.draw(); 
       }, 
       changeMonth: true, 
       changeYear: true, 
       dateFormat: "dd/mm/yy" 
      }); 
      $("#max").datepicker({ 
       onSelect: function() { 
        oTable.draw(); 
       }, 
       changeMonth: true, 
       changeYear: true, 
       dateFormat: "dd/mm/yy" 
      }); 
     } 

    }); 
}); 

$.fn.dataTable.ext.search.push(
    function(settings, data, dataIndex) { 
     var min = (moment($('#min').val(), "DD/MM/YYYY").isValid()) ? ~~moment($('#min').val(), "DD/MM/YYYY").format("X") : null; 
     var max = (moment($('#max').val(), "DD/MM/YYYY").isValid()) ? ~~moment($('#max').val(), "DD/MM/YYYY").format("X") : null; 
     var d = ~~moment(data[1], "DD/MM/YYYY").format("X"); 
     if (min == null && max == null) { 
      return true; 
     } 
     if (min == null && d <= max) { 
      return true; 
     } 
     if (max == null && d >= min) { 
      return true; 
     } 
     if (d <= max && d >= min) { 
      return true; 
     } 
     return false; 
    } 
); 

。私はmomentjsを追加しました。誰が本当にJSの日付を意識して気にすることができますか?

希望に役立ちます。

+0

はい、それは私が現時点で持っているのと同じです。しかし、おそらく、日付と時刻があり、範囲を検索できるcolspanが考えられます。しかし、DataTablesはcolspanを追加するとエラーを出します。私もdatetimepickerを追加して時間を分割してみました。 –

+0

https://jsfiddle.net/brwsvzd1/5/私のJS –

+1

をチェックしてください。ああ、あなたの問題は 'colspan'ですか?なぜあなたはそれを必要としますか? DataTablesを使用してセルを単純にマージすることはできませんか?更新されたJSFiddleをここで確認してください:https://jsfiddle.net/annoyingmouse/yerz2dg2/5/ – annoyingmouse

関連する問題