Nano Hash - криптовалюты, майнинг, программирование

Фильтрация столбцов DataTable, удаление определенного фильтра столбцов

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

Связать DataTables: https://datatables.net/extensions/fixedheader/examples/options/columnFiltering.html

Моя таблица:

<table id="table" class="table table-sm table-responsive display text-center" style="width:100%">
            <thead>
                <tr>
                    <th><input type="checkbox" id="selectAll" /></th>
                    <th>Id</th>
                    <th>Filial</th>
                    <th>Serie</th>
                    <th>Documento</th>
                    <th>Nop</th>
                </tr>
            </thead>
           
        </table>

JS:

     $(document).ready(function () {
    $("#selectAll").click(function () {
        let select = $(this).is(":checked")
        $("[type=checkbox]").prop('checked', select)
    })
});

$(document).ready(function () {
    $('#table thead tr').clone(true).appendTo('#table thead');
    $('#table thead tr:eq(0) th').each(function (i) {
            $(this).html('<input type="text" />');

            $('input', this).on('keyup change', function () {
                if (table.column(i).search() !== this.value) {
                    table
                        .column(i)
                        .search(this.value)
                        .draw();
                }
            });         
    });
28.04.2021

  • how-to-disable-filtering-on- конкретные столбцы 28.04.2021
  • Здравствуйте, мне нужно удалить ввод поиска из первого столбца, по этой ссылке показано, как отключить поиск в столбце, не снимая фильтр 28.04.2021
  • Чтобы не рисовать элемент управления <input>, посмотрите на эту строку: $('#table thead tr:eq(0) th').each( function (i) {. Здесь i представляет счетчик циклов. Когда счетчик равен 0, вы создаете элемент управления вводом для индекса столбца 0 (первый столбец). Поэтому вы можете использовать оператор if(i > 0) { ... } внутри этой функции, чтобы игнорировать первую итерацию цикла. 28.04.2021
  • это сработало, чтобы удалить ввод из первого столбца, но он удалил флажок, который я поставил в первом столбце, я загрузил изображение до и после, мне нужно сохранить этот флажок из первого столбца, чтобы выбрать все поля 28.04.2021
  • Отпечатки: До: ibb.co/Gt9NnFc После: ibb.co/f8S0GNq 28.04.2021
  • Вы можете отредактировать свой вопрос, чтобы показать обновленный подход (покажите нам код!) и объяснить, что происходит. В противном случае мы действительно не знаем, какие изменения вы внесли. 28.04.2021
  • моей единственной модификацией была та, которую вы опубликовали, вставив if (i > 0), это удалило ввод из первого столбца, однако сняло флажок, чтобы выбрать все. 28.04.2021
  • ОК - понял - но я не знаю, как именно вы внесли свои изменения. Когда я вношу предложенные изменения в мою тестовую версию вашего кода, этого не происходит. Вместо этого я вижу исходный флажок, который был клонирован из исходной таблицы HTML (которую вы можете достаточно легко удалить). Другими словами, так что, не видя вашего кода, я не знаю, почему ваш конечный результат отличается от моего. Я не хочу публиковать ответ, так как не знаю, действительно ли он вам поможет на данный момент. 28.04.2021
  • Я понимаю, я сделал модификацию своего вопроса с обновленным кодом и в конце распечатал до и после, надеюсь, я смогу объяснить свою проблему и спасибо за вашу помощь. 28.04.2021
  • Спасибо за обновление, и да, именно этого изменения кода я и ожидал (как вы уже знали!). Я не знаю, почему у вас исчезает флажок. Я не могу воссоздать это поведение. Я вижу, что вы используете id="table" в своем HTML, но вы используете id="tabelaOperador" в своем jQuery. Я предполагаю, что это только проблема копирования/вставки, а не в коде, который вы выполняете. 28.04.2021
  • Да я бразилец, я забыл перевести в JS, когда копировал, правильно отредактировал, у меня не работает, буду дальше отлаживать код и большое спасибо за внимание 28.04.2021
  • @andrewjames я обнаружил, что это проблема в моем css, пожалуйста, добавьте свое решение в качестве ответа, чтобы вы могли добавить его в качестве решения 28.04.2021

Ответы:


1

Чтобы не рисовать элемент управления в первую очередь, взгляните на эту строку:

$('#table thead tr:eq(0) th').each( function (i) { 

Здесь i представляет счетчик циклов. Когда счетчик равен 0, вы создаете элемент управления вводом для столбца с индексом 0 (первый столбец). Поэтому вы можете использовать оператор if(i > 0) { ... } внутри этой функции, чтобы игнорировать первую итерацию цикла.

Поскольку вы клонируете строку заголовка, которая уже содержит флажок в первом столбце, вам также может потребоваться удалить клонированный флажок с помощью $( this ).empty();.

$('#table thead tr:eq(0) th').each(function(i) {

  if (i == 0) {
    $( this ).empty();
  } else {
    var title = $(this).text();

    $(this).html('<input type="text" />');

    $('input', this).on('keyup change', function() {
      if (table.column(i).search() !== this.value) {
        table
          .column(i)
          .search(this.value)
          .draw();
      }
    });
  }

});
28.04.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..