我们使用here中的最新DataTable。这是我的代码,然后在新的DataTable API之前工作。
var table = $('#table-id').dataTable({
// blah blah blah
}).fnSetFilteringDelay();
现在我使用了最新的DataTable:
var table = $('#table-id').DataTable({ //Note the capital letter "D"
// blah blah blah
}).fnSetFilteringDelay();
我收到此错误:
Uncaught TypeError: undefined is not a function
指向fnSetFilteringDelay()
?那么如何在新的DataTable API中正确使用这种方法呢?
答案 0 :(得分:1)
确保通过包含cdn或仅将其插入脚本标记
来包含插件<script type="text/javascript">
$(document).ready(function () {
"use strict";
jQuery.fn.dataTableExt.oApi.fnSetFilteringDelay = function (oSettings, iDelay) {
var _that = this;
if (iDelay === undefined) {
iDelay = 250;
}
this.each(function (i) {
$.fn.dataTableExt.iApiIndex = i;
var
$this = this,
oTimerId = null,
sPreviousSearch = null,
anControl = $('input', _that.fnSettings().aanFeatures.f);
anControl.off('keyup search input').on('keyup search input', function () {
var $$this = $this;
if ( (anControl.val().length == 0 || anControl.val().length >= 3) && (sPreviousSearch === null || sPreviousSearch != anControl.val()) ){
window.clearTimeout(oTimerId);
sPreviousSearch = anControl.val();
oTimerId = window.setTimeout(function () {
$.fn.dataTableExt.iApiIndex = i;
_that.fnFilter(anControl.val());
}, iDelay);
}
});
return this;
});
return this;
};
});
</script>
一旦完成。你定义你的表并启用你的延迟
<script type="text/javascript">
var TableSelector = $('.grid-mvc table.table');
var table = TableSelector.DataTable({
// .... options
});
TableSelector.dataTable().fnSetFilteringDelay(600); // delay
</script>
就像你已经注意到的那样,我们必须注意DataTable和dataTable之间的区别,它们是不同的。我希望这会对你有所帮助。
答案 1 :(得分:0)
也许你没有在文件中包含插件
<script type="text/javascript" src="fnSetFilteringDelay.js"></script>
或cdn
// cdn.datatables.net/plug-ins/725b2a2115b/api/fnSetFilteringDelay.js