2017-01-19 2 views
3

Я пытаюсь отфильтровать или искать столбец в jquery datatable, используя флажок multiselect. Предположим, например, если это столбец города, таблица должна фильтровать или искать, если я проверю два списка в раскрывающемся списке флажков и покажу результат для выпадающих отмеченных ссылок. Я пробовал много способов найти решение, но я не мог взломать его до сих пор. если кто-то может помочь в решении этого, это очень ценится. Заранее спасибо. Я просто помещаю код jquery ниже для вашей справки.Поиск или фильтрация столбца в jquery datatable с помощью всплывающего меню multi select с флажком

<head> 
    <meta charset="utf-8"> 
    <title>jQuery Datatable</title> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 

    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"> 

    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css"> 

    <link rel="stylesheet" href="http://davidstutz.github.io/bootstrap-multiselect/dist/css/bootstrap-multiselect.css"> 

    <!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> --> 

    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 

    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

    <script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> 

    <script src="http://davidstutz.github.io/bootstrap-multiselect/dist/js/bootstrap-multiselect.js"></script> 

    <style> 
     * { 
      margin:0; 
      padding: 0; 
     } 
     #wrap { 
      width: 100%; 
      margin: auto; 
     } 
     .addcolr { 
      color: green; 
     } 
    </style> 
    <script> 
     /*$(document).ready(function() { 
     $('#example th').each(function() { 
      alert(this.textContent); 
     }); 
    });*/ 
     $(document).ready(function() { 
      $('#example').DataTable({ 

      "bFilter": true, 
      initComplete: function() { 
      this.api().columns(2).every(function() { 
       var column = this; 
       var select = $('<select id="sel_dropdown" multiple="multiple"><option value=""></option></select>') 
        .appendTo($(column.footer()).empty()); 
        /*.on('change', function() { 
         var val = $.fn.dataTable.util.escapeRegex(
          $(this).val() 
         ); 

         column 
          .search(val ? '^'+val+'$' : '', true, false) 
          .draw(); 
        });*/ 

       column.data().unique().sort().each(function (d, j) { 
        select.append('<option value="'+d+'">'+d+'</option>') 
       }); 
       }); 
      } 

      }); 

      $('#example tbody tr td:nth-child(4)').each(function(){ 

      if($(this).text() == 61) { 
        $(this).css("color","red"); 
      } 
      else if($(this).text() == 47) { 
        $(this).addClass("addcolr"); 
      } 
      }); 

      //multiselect 
      $('#sel_dropdown').multiselect(); 

      // $('#example').DataTable(); 

      $('#sel_dropdown').change(function() { 
       $('#example').DataTable().fnFilter($('#sel_dropdown').val(),2); 
      }); 

     }); 
    </script> 
</head> 
<body> 
<div id="wrap"></div></body> 

ответ

5

Вы можете добиться того, что с Search API

Это позволяет построить регулярное выражение, а затем отфильтровать нужный столбец:

$('#table').DataTable().column(col).search(regex, true, true).draw(); 

Я кодированный полный пример для будущей ссылки :

JSFIDDLE

0

Если вы используете angularjs, вы можете попробовать Smart table, это супер проста в использовании !:

<st-select-multiple collection="collection" predicate="education"></st-select-multiple>

 Смежные вопросы

  • Нет связанных вопросов^_^