美文网首页
datatables之多个自定义过滤

datatables之多个自定义过滤

作者: answer6 | 来源:发表于2017-10-20 16:50 被阅读0次
  1. 做后台管理刚好用到了dt, 需求: 是对表格数据做时间段的范围搜索
<script type="text/javascript">
   jQuery(document).ready(function (){
   // 设置可选最大日期
   var dateObj = new Date();
   var year = dateObj.getFullYear();
   var month = dateObj.getMonth()+1;
   var day = dateObj.getDate();
 if(month<10){
   month = '0' + month;
 }
 if(day<10){
    day = '0' + day;
 }
 var curDate = year + '-' + month + '-'+ day;
 jQuery('#start-date').attr('max', curDate); //设置可以选择的最大日期不能大于当天日期
 jQuery('#end-date').attr('max', curDate);
 jQuery('#person-start-date').attr('max', curDate);
 jQuery('#person-end-date').attr('max', curDate);
 //dt开始
 var table = jQuery('#table_id_info').DataTable({
   // dom:"lrtip", // 隐藏掉自己的搜索框
   // searching:false,
   // serverSide:true,
   // processing:true,
 language: {
       url: 'xxx'
 },
 ajax: {
   type:'POST',
   url: "<?php echo admin_url( 'admin-ajax.php' );?>",
   dataSrc:'items.data',
 data: {
   action:'get_reward_data_log',
 },
   // success:function(res){
       // console.log(res); 看数据 关掉之后 数据才会遍历下来
   //  }
 },
 // 这里为表格绑定数据
 "columns": [
   { data : 'id'},
   { data : 'staff_display_name'},
   { data : 'staff_wx_headimg',
      // 对返回的数据做处理
       render:function( data, type, full, meta ){
         return '![](' +data + ')<span>' + '</span>';
       }
   },
   { data : 'staff_realname'},
   { data : 'staff_store_name'},
   { data : 'customer_wx_nickname'},
   { data : 'reward'},
   { data : 'create_date'}
   ]
 });
  //这个顺序很重要
   jQuery('#start-date,#end-date').change(function() {   // 1点击事件
    //如果想加入第三方的input搜索 搜索的值可以获取到 从这里发到后台
    //https://datatables.net/reference/event/preXhr
    table
        .on('preXhr.dt', function ( e, settings, data ) {
            data.ctime = jQuery('#start-date').val();
            data.etime = jQuery('#end-date').val();
        })
    //=====================================================
     jQuery.fn.dataTable.ext.search.push(              // 2 自定义排序
         function( settings, data, dataIndex ) {
         // console.log( data )
         //  注意这几个参数 格式 一定要打印一下  日期的格式一致才可以
         var start = new Date( jQuery("#start-date").val().replace(/-/g,"/") ).setHours(0,0,0,0); // 15000000000000000
         var end = new Date( jQuery("#end-date").val().replace(/-/g,"/") ).setHours(0,0,0,0); // 1500000000000000
         var ymd = data[7].replace(/-/g,"/").substr(0,10);
         var search = new Date( ymd );
        //  判断可以不用动  直接换里面的参数就ok
         if ( ( isNaN (start) && isNaN (end) ) ||
         (isNaN(start) && search <= end) ||
         (search>= start && isNaN(end) ) ||
         (start <= search && search <= end ) 
         ){
            return true;
         }else{
             return false;
         }
   });
    //3 表格重绘
     table
     .draw();//按时间段筛选完重绘表格
    // 4 多次用到 第二步的时候 必须用下面的这个方法
    jQuery.fn.dataTable.ext.search.pop();
    })
 });
//   注意 1 2 3 4 的位置
 </script>

相关文章

网友评论

      本文标题:datatables之多个自定义过滤

      本文链接:https://www.haomeiwen.com/subject/gvpvuxtx.html