新しいテーブルフィルタリング機能に問題があります。フィルタリングするオファーを選択すると問題が発生します。フィルタリングされた表から見える行だけをフィルタリングして、表を隠したデータです。新しいフィルタ機能を既存のページ設定とマージするjQuery/Javascript
さらに、moreをクリックすると、moreをクリックすると、テーブルには現在のフィルタの外にデータが表示され始めます。それは良いことではありません。
また、私のページ分割方法(以下のコード)と組み合わされた「フリーハンドセット」によってフィルタリングするフィルタリング機能もあります。
「フリーハンドセット」フィルタ(チェックボックスの1つ)とページ分割方法でこのフィルタ(ドロップダウン1)をマージすると、フィルタでフィルタリングするオプションを選択すると、その中のすべてのデータページングによって表示されている可視行だけではありません。
https://jsfiddle.net/51Le6o06/48/
上記のフィドルが並んで働いて両方のフィルタリング機能を示していますが、彼らは一緒にうまく機能しません。
上記のjsfiddleのように、ドロップダウンフィルタはHTMLからオプションを収集し、ドロップダウンメニューに表示するので、すべてのオプションがページングによって隠されてフィルタリングされます。
各機能のjQueryとJavascriptがあります。
これはうまく機能しない新しいフィルタです。
$(document).ready(function() {
$('.filter-gift').each(filterItems);
});
function filterItems(e) {
var items = [];
var table = '';
tableId = $(this).parent().parent().attr('tag')
var listItems = "";
listItems += "<option value=''> -Select- </option>";
$('div[tag="' + tableId + '"] table.internalActivities .information').each(function (i) {
var itm = $(this)[0].innerText;
if ($.inArray(itm, items) == -1) {
items.push($(this)[0].innerText);
listItems += "<option value='" + i + "'>" + $(this)[0].innerText + "</option>";
}
});
$('div[tag="' + tableId+ '"] .filter-gift').html(listItems);
$('.filter-gift').change(function() {
if($(this).val()!= "") {
var tableIdC = $(this).parent().parent().attr('tag');
var text = $('div[tag="' + tableIdC + '"] select option:selected')[0].text.replace(/(\r\n|\n|\r| |)/gm, "");;
$('div[tag="' + tableIdC + '"] .product-information-row').each(function (i) {
if ($(this).text().replace(/(\r\n|\n|\r| |)/gm, "") == text) {
$(this).show();
$(this).prev().show();
$(this).next().show();
}
else {
$(this).hide();
$(this).prev().hide();
$(this).next().hide();
}
});
} else {
$(this).parent().parent().find('table tr').show();
}
});
}
これは、上記の機能(作業中)とマージするフィルタとページ機能です。
jQuery.fn.sortPaging = function(options) {
var defaults = {
pageRows: 2
};
var settings = $.extend(true, defaults, options);
return this.each(function() {
var container = $(this);
var tableBody = container.find('.internalActivities > tbody');
var dataRows = [];
var currentPage = 1;
var maxPages = 1;
var buttonMore = container.find('.seeMoreRecords');
var buttonLess = container.find('.seeLessRecords');
var buttonFree = container.find('.filter-free');
var tableRows = [];
var maxFree = 0;
var filterFree = buttonFree.is(':checked');
function displayRows() {
tableBody.empty();
var displayed = 0;
$.each(dataRows, function(i, ele) {
if(!filterFree || (filterFree && ele.isFree)) {
tableBody.append(ele.thisRow).append(ele.nextRow);
displayed++;
if(displayed >= currentPage*settings.pageRows) {
return false;
};
};
});
};
function checkButtons() {
buttonLess.toggleClass('element_invisible', currentPage<=1);
buttonMore.toggleClass('element_invisible', filterFree ? currentPage>=maxFreePages : currentPage>=maxPages);
};
function showMore() {
currentPage++;
displayRows();
checkButtons();
};
function showLess() {
currentPage--;
displayRows();
checkButtons();
};
function changedFree() {
filterFree = buttonFree.is(':checked');
if(filterFree && currentPage>maxFreePages) {
currentPage=maxFreePages;
};
displayRows();
checkButtons();
};
tableBody.find('.product-data-row').each(function(i, j) {
var thisRow = $(this);
var nextRow = thisRow.next();
var amount = parseFloat(thisRow.find('.amount').text().replace(/£/, ''));
var isFree = thisRow.find('.free').length;
maxFree += isFree;
dataRows.push({
amount: amount,
thisRow: thisRow,
nextRow: nextRow,
isFree: isFree
});
})
dataRows.sort(function(a, b) {
return a.amount - b.amount;
});
maxPages = Math.ceil(dataRows.length/settings.pageRows);
maxFreePages = Math.ceil(maxFree/settings.pageRows);
tableRows = tableBody.find("tr");
buttonMore.on('click', showMore);
buttonLess.on('click', showLess);
buttonFree.on('change', changedFree);
displayRows();
checkButtons();
})
};
$('.sort_paging').sortPaging();
目標
- は、ページネーションとの仕事でフィルターの作業を行います。
- 「フリーハンドセット」フィルタと同時にフィルタを動作させます。
は、私はあなたがその – Rajdeep
を動作していない、再び台無しだと思いますjsfiddleどのような問題は、テーブルのフィルタを混乱させることであり、フィルタは主要な問題である隠しデータをフィルタリングしません。もう1つの問題は、無料の端末がチェックされていてギフトをフィルタリングしている場合など、それらを一緒に動作させることです。ちょっと説明するのが難しい... – Scott
あなたの要件は、あなたは私が – Rajdeep