Я написал ниже функции jQuery для вызова фильтров на datatable. Но функция «изменения» jQuery, кажется, вызывает два раза за один клик, поэтому, если я пытаюсь отключить один из фильтров, он сразу снова включится.onchange event handler триггер дважды
Функция:
$(document).ready(function() {
var table = $('#example').DataTable({
rowReorder: {
selector: 'td:nth-child(2)'
},
responsive: true,
initComplete: function() {
var filters = $('div[id$=referalFilters]').find('input:checkbox');
filters.each(function() {
dict.push({
key: $(this).prop('name'),
value: $(this).prop('checked')
});
$(this).change(function() {
var currentName = $(this).prop('name');
for (var i = 0; i < dict.length; i++) {
if (dict[i].key == currentName) {
if (dict[i].value == true) {
dict[i].value = false;
} else {
dict[i].value = true;
}
}
}
for (var i = 0; i < dict.length; i++) {
if (dict[i].value == true) {
$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
var currentStatus = data[3];
var found = false;
for (var i = 0; i < dict.length; i++) {
if (currentStatus == String(dict[i].key)) {
if (dict[i].value == true) {
found = true;
}
}
}
if (found) {
return true;
}
return false;
})
}
}
table.draw();
});
});
//this.api().columns().every(function() {
// var column = this;
//});
}
});
});
Я буду признателен, если кто-то может позволить мне знать, что вызывает функцию смены несколько раз.
Вот jsfiddle: https://jsfiddle.net/a81h11tc/. В Js fiffle кнопка, похоже, переключается, но фильтрация не происходит.
Несколько элементов, разделяющих один и тот же 'id'? – melancia
Можете ли вы настроить JSFiddle для нас или сделать это в фрагменте с надлежащим HTML для сопровождения? –
@AngelosChalaris: сделаю это сейчас –