разные функции и переменные на один Datatable - PullRequest
0 голосов
/ 17 мая 2018

небольшая помощь, пожалуйста.

Я использую datatables в моем проекте WordPress, и мне нужно сделать две разные функции и требуются разные переменные.Первая функция - добавить индекс / ранг в первом столбце, а вторая - отфильтровать активное содержимое второго столбца.Но плагин datatables не разрешит этого и отправит предупреждающее сообщение.

Ошибка вызывается передачей опций объекту-конструктору DataTables, когда экземпляр DataTable для выбранного узла уже инициализирован.

Может кто-нибудь показать мне, как это сделать?любая помощь будет высоко ценится

В настоящее время вот мой код:

$(document).ready(function() {
    var t = $('#dt').DataTable( {
        "columnDefs": [ {
            "searchable": false,
            "orderable": false,
            "targets": 0
        } ],
        "order": [[ 7, "desc" ]],
    } );

    t.on( 'order.dt search.dt', function () {
        t.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
            cell.innerHTML = i+1;
        } );
    } ).draw();
} );



$(document).ready(function() {
  otable = $('#dt').dataTable({
    "bSortCellsTop": true,
    "order": [[ 7, "desc" ]],
  });
})

function filterme() {
  //build a regex filter string with an or(|) condition
  var types = $('input:checkbox[name="Category"]:checked').map(function() {
    return '^' + this.value + '\$';
  }).get().join('|');
  otable.fnFilter(types, 1, true, false, false, false);

  //use radio values
  var frees = $('input:radio[name="free"]:checked')[0].value;
  otable.fnFilter(frees, 2, false, false, false, false);
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Здесь есть несколько проблем:

  1. У вас есть пара $(document).ready(function() { блоков, вы должны объединить их до одного.
  2. Вы инициализируете один и тот же DataTable ('#dt') дважды с разными аргументами. Это невозможно, вы можете сделать это только один раз. Было бы лучше переместить "bSortCellsTop": true, в первую инициализацию. Затем вы можете просто сделать oTable otable = $('#dt').DataTable() - без опций он не инициализирует таблицу, он просто получает дескриптор. Обратите внимание также на регистр во второй инициализации, в настоящее время он дает вам дескриптор jQuery, а не DataTables (я исправил это в последнем примере).
0 голосов
/ 17 мая 2018

Уже работает. Мне просто нужно вызвать простую функцию

Вот код:

$(document).ready(function() {
    var t = $('#dt').DataTable( {
        "bSortCellsTop": true,
        "order": [[ 7, "desc" ]],
        "columnDefs": [ {
            "searchable": false,
            "orderable": false,
            "targets": 0
        } ]
    } );

    t.on( 'order.dt search.dt', function () {
        t.column(0, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
            cell.innerHTML = i+1;
        } );
    } ).draw();
} );



$(document).ready(function() {
  otable = $('#dt').dataTable();
})

function filterme() {
  //build a regex filter string with an or(|) condition
  var types = $('input:checkbox[name="Category"]:checked').map(function() {
    return '^' + this.value + '\$';
  }).get().join('|');
  //filter in column 0, with an regex, no smart filtering, no inputbox,not case sensitive
  otable.fnFilter(types, 1, true, false, false, false);

  //use radio values
  var frees = $('input:radio[name="free"]:checked')[0].value;
  //now filter in column 2, with no regex, no smart filtering, no inputbox,not case sensitive
  otable.fnFilter(frees, 2, false, false, false, false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...