Subversion-Projekte lars-tiefland.faltradxxs.de

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

/**
 * Enables filtration delay for keeping the browser more responsive while 
 * searching for a longer keyword.
 *
 * This can be particularly useful when working with server-side processing,
 * where you wouldn't typically want an Ajax request to be made with every key
 * press the user makes when searching the table.
 *
 *  @name fnSetFilteringDelay
 *  @summary Add a key debouce delay to the global filtering input of a table
 *  @author [Zygimantas Berziunas](http://www.zygimantas.com/), 
 *    [Allan Jardine](http://www.sprymedia.co.uk/) and _vex_
 *
 *  @example
 *    $(document).ready(function() {
 *        $('.dataTable').dataTable().fnSetFilteringDelay();
 *    } );
 */

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.unbind( 'keyup search input' ).bind( 'keyup search input', function() {
                        var $$this = $this;

                        if (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;
};