如何在新的DataTable API中使用fnSetFilteringDelay方法?

时间:2014-07-31 10:42:08

标签: jquery datatable

我们使用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中正确使用这种方法呢?

2 个答案:

答案 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