Раскрывающийся список в таблице не фильтруется по данным. Как использовать раскрывающиеся списки в ячейках таблицы с использованием Datatables. Js? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь semanti c пользовательский интерфейс и таблицы данных. js и он отлично работает, но у него есть несколько столбцов с раскрывающимся списком, и кажется, что таблицы данных не работают с этими столбцами. Я пробовал поиск по столбцам. Я также попробовал фильтр плагин, но на самом деле он показывает все значения, найденные в опциях к нему. Наверное, поэтому он не работает. Прямо сейчас мой код выглядит следующим образом. Извините за беспорядок, но я перепробовал слишком много вещей, но все тщетно.

$.fn.dataTable.ext.search.push(
        function (settings, searchData, index, rowData, counter) {
            // console.log(searchData);
            // console.log(rowData);
            console.log(counter);

          // Get global search input val as lower case
          var val = $('.dataTables_filter input').val().toLowerCase();

          // Return all rows if search is blank
          if (val === '') {
            return true;
          }

          // Otherwise if row has Edinburgh return it always
          if (searchData[2] === 'Edinburgh') {
            return true;
          }

          // Join row data as string and return it if there is a "Smart" match
          var row = searchData.join('').toLowerCase();
          if (row.includes(val)) {
            return true;
          }

          return false;

        }
      );

    // var table = $('#leads-table').DataTable();;

    var table = $('#leads-table').DataTable( {
        initComplete: function () {
            this.api().columns().every( function () {
                var column = this;

                var select = $('<select><option value=""></option></select>')
                        .appendTo( $(column.footer()).empty() )
                        .on( 'change', function () {
                            var val = $.fn.dataTable.util.escapeRegex(
                                $(this).val()
                            );

                            // console.log(val);

                            // console.log(column.search(val).draw());



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

                column.data().unique().sort().each( function ( d, j ) {
                    if( d.includes("dropdown") ){
                        value = $('input[type="hidden"]', d).val();
                        text = $('.text', d).text().trim();
                        // console.log(text);
                        select.append( '<option value="'+text+'">'+ text +'</option>' );
                    }


                } );
            } );
        }
    } );

    // Trun off the Datatables event and use our own

$('.dataTables_filter input')
    .off()
    .on('keyup', function() {
        // Draw the table to execute the search plugin
        table.draw();
     });
...