【发布时间】:2014-06-04 09:44:50
【问题描述】:
我是 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();
}
我需要将它绑定到一个按钮才能使其工作。
$(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()。 stackoverflow.com/questions/12064164/e-preventdefault-prevent-click
-
感谢您的回复,我更新了我的问题。
-
$('.filter-term').remove();使用这个我可以删除过滤器,但表格和过滤器在使用fnDraw();之后不会重置。
标签: javascript jquery datatables jquery-datatables reset