gpt4 book ai didi

javascript - jQuery DataTables 和 Columnfilterwidget 重置所有过滤器按钮

转载 作者:行者123 更新时间:2023-12-03 12:28:58 39 4
gpt4 key购买 nike

我是 Javascript 新手。所以我的问题有点愚蠢。

我正在寻找 Columnfilterwidget 的“重置所有过滤器”按钮并找到了此代码。

$.fn.dataTableExt.oApi.fnResetAllFilters = function (oSettings, bDraw/default true/) {
for(iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) {
oSettings.aoPreSearchCols[ iCol ].sSearch = '';
}
$('.filter-term').remove();
oSettings.oPreviousSearch.sSearch = '';
if(typeof bDraw === 'undefined') bDraw = true;
if(bDraw) this.fnDraw();
}

我需要将它绑定(bind)到一个按钮才能使其工作。

$(document).ready(function(){
$("button").click(function(){
$.fn.dataTableExt.oApi.fnResetAllFilters = function (oSettings, bDraw/default true/) {
for(iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) {
oSettings.aoPreSearchCols[ iCol ].sSearch = '';
}
$('.filter-term').remove();
oSettings.oPreviousSearch.sSearch = '';
if(typeof bDraw === 'undefined') bDraw = true;
if(bDraw) this.fnDraw();
}

});
});

但它不起作用,我点击按钮时得到的只是我的页面刷新。我在这里做错了什么???

已更新

$(document).ready(function(){
$("button").click(function(e){e.preventDefault();})
$("button").click(function(){
console.log("afterbutton");
$.fn.dataTableExt.oApi.fnResetAllFilters = function (oSettings, bDraw) {
console.log("insidefunction");
for(iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) {
oSettings.aoPreSearchCols[ iCol ].sSearch = '';
}
$('.filter-term').remove();
oSettings.oPreviousSearch.sSearch = '';
if(typeof bDraw === 'undefined') bDraw = true;
if(bDraw) this.fnDraw();
}

});
});

现在页面不刷新,代码也不工作,控制台仅显示直到我单击按钮后的按钮消息。

这段代码有什么问题吗?

非常感谢您的回复,根据您的建议我已经更新了我的代码(我在 $(document).ready(function()) 之外获取了按钮单击事件

$(document).ready(function(){
$.fn.dataTableExt.oApi.fnResetAllFilters = function (oSettings, bDraw) {
for(iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) {
oSettings.aoPreSearchCols[ iCol ].sSearch = '';
}
$('.filter-term').remove();
oSettings.oPreviousSearch.sSearch = '';
if(typeof bDraw === 'undefined') bDraw = true;
if(bDraw) this.fnDraw();
}

} );

// button click event
$("button").click(function(e){
e.preventDefault();
// 'myDataTable' is the name you gave the datatable at initialisation - oTable or similar
table.fnResetAllFilters();
});

这仍然会在单击按钮时刷新我的页面,但是如果我在 $(document).ready(function() 内获取按钮单击事件,则会收到错误 table.fnResetAllFilters() ; 不是函数。table = $('#example').DataTable({ 这是我初始化数据表的方式。

最佳答案

您需要将 PreventDefault() 添加到原始按钮单击监听器中,实际上您已经添加了另一个监听器。

修改您的代码,使其看起来像这样:

$(document).ready(function(){
$("button").click(function(e){
e.preventDefault();
console.log("afterbutton");
...

看起来您也已将函数定义包含在按钮单击代码中。

它需要看起来更像这样:

$(document).ready(function(){
// function definition
$.fn.dataTableExt.oApi.fnResetAllFilters = function (oSettings, bDraw/default true/) {
for(iCol = 0; iCol < oSettings.aoPreSearchCols.length; iCol++) {
oSettings.aoPreSearchCols[ iCol ].sSearch = '';
}
$('.filter-term').remove();
oSettings.oPreviousSearch.sSearch = '';
if(typeof bDraw === 'undefined') bDraw = true;
if(bDraw) this.fnDraw();
}
});

// button click event
$("button").click(function(e){
e.preventDefault();
// 'myDataTable' is the name you gave the datatable at initialisation - oTable or similar
myDataTable.fnResetAllFilters();
});
});

关于javascript - jQuery DataTables 和 Columnfilterwidget 重置所有过滤器按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034076/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com