2017-02-17 27 views
1

我有以下代码:服务器端的AJAX搜索,等到完成输入 - 多表

$('.gerais').each(function(){ 
    var daotable = $(this).data('dao'); 
    x = $(this).DataTable({ 
     serverSide: true, 
     ajax: { 
      url: $('body').data('url')+'gerais/ajax_list/'+daotable, 
      type: "POST" 
     }, 
     buttons: {    
      dom: { 
       button: { 
        className: 'btn btn-default' 
       } 
      }, 
      buttons: [ 
       { 
        extend: 'copyHtml5', 
        text: "<i class=' icon-copy3'></i> Copiar" 
       }, 
       { 
        extend: 'excelHtml5', 
        text: "<i class=' icon-file-excel'></i> Excel" 
       }, 
       { 
        extend: 'pdfHtml5', 
        text: "<i class=' icon-file-pdf'></i> PDF" 
       }, 
       { 
        extend: 'print', 
        text: '<i class="icon-printer"></i> Imprimir' 
       } 
      ], 
     } 
    }); 

}); 
$('.dataTables_filter input[type=search]').attr('placeholder','Pesquisar...') 
.unbind() 
.bind('input', function(e){ 
    var item = $(this); 
    searchWait = 0; 
    if(!searchWaitInterval) searchWaitInterval = setInterval(function(){ 
     if(searchWait >= 3){ 
      clearInterval(searchWaitInterval); 
      searchWaitInterval = ''; 
      searchTerm = $(item).val(); 
      x[z].search(searchTerm).draw(); // change to new api 
      searchWait = 0; 
     } 
     searchWait++; 
    },200); 

}); 

的这部分代码负责,创造我的页面上的数据表中的循环,即有类 “.gerais”:

$('.gerais').each(function(){ 
    var daotable = $(this).data('dao'); 
    x = $(this).DataTable({ 
     serverSide: true, 
     ajax: { 
      url: $('body').data('url')+'gerais/ajax_list/'+daotable, 
      type: "POST" 
     }, 
     buttons: {    
      dom: { 
       button: { 
        className: 'btn btn-default' 
       } 
      }, 
      buttons: [ 
       { 
        extend: 'copyHtml5', 
        text: "<i class=' icon-copy3'></i> Copiar" 
       }, 
       { 
        extend: 'excelHtml5', 
        text: "<i class=' icon-file-excel'></i> Excel" 
       }, 
       { 
        extend: 'pdfHtml5', 
        text: "<i class=' icon-file-pdf'></i> PDF" 
       }, 
       { 
        extend: 'print', 
        text: '<i class="icon-printer"></i> Imprimir' 
       } 
      ], 
     } 
    }); 

}); 

而这一次是通过在搜索延迟

$('.dataTables_filter input[type=search]').attr('placeholder','Pesquisar...') 
.unbind() 
.bind('input', function(e){ 
    var item = $(this); 
    searchWait = 0; 
    if(!searchWaitInterval) searchWaitInterval = setInterval(function(){ 
     if(searchWait >= 3){ 
      clearInterval(searchWaitInterval); 
      searchWaitInterval = ''; 
      searchTerm = $(item).val(); 
      x[z].search(searchTerm).draw(); // change to new api 
      searchWait = 0; 
     } 
     searchWait++; 
    },200); 

}); 

这工作WEL负责l只有一张桌子,但我有3张桌子,只能在最后一张桌子上。

我已经尝试在数组上转换“x”,但它不起作用。

+0

它使数据表插件 – Space

+0

而且我删除德 “[Z]” 以 “×[Z] .search(.....” – Space

+0

“绑定” 已被弃用。 – Bindrid

回答

0

我做了一些小的改动,并在两个客户端(serverSide:false)表中进行了测试。

 $(function() { 
      $("#tabs").tabs(); 
      $('#tblTab1').DataTable(); 
      $('#tblTab2').DataTable(); 

       // definded global variable. 
       var searchWaitInterval = null; 
      $('.dataTables_filter input[type=search]').attr('placeholder', 'Pesquisar...') 
       .off() 
       .on('input', function (e) { 
        var item = $(this); 
        var searchWait = 0; 
        if (!searchWaitInterval) searchWaitInterval = setInterval(function() { 
         if (searchWait >= 3) { 
         clearInterval(searchWaitInterval); 
         searchWaitInterval = null; 
         searchTerm = $(item).val(); 
          // aria-controls is an attribute added by DataTables so it makes it easy to target the right 
          // tables without resorting to global variables. 
          $("#" + item.attr("aria-controls")).DataTable().search(searchTerm).draw(); // change to new api 
          searchWait = 0; 
       } 
       searchWait++; 
      }, 200); 

     }); 
    }); 
+0

话虽如此,使用占位符的“输入”事件导致它只需点击如果用户点击该字段但决定不输入任何内容,那么您将不必要地访问服务器如果您想保留占位符,我建议您将事件更改为“按键” – Bindrid

+0

我需要“每个“,因为有些页面我有6个表格,所有这些页面都会发出Ajax请求来获取信息rmit我没有一个js文件,其中n行使相同的东西。你知道我可以做些什么,让这个功能在这里工作吗? – Space

+0

我在这里测试和工作,非常感谢您的帮助。 – Space