Вход Регистрация
Файл: wapxl.ru/bower_components/datatables-plugins/pagination/input.js
Строк: 374
<?php
/**
 * Sometimes for quick navigation, it can be useful to allow an end user to
 * enter which page they wish to jump to manually. This paging control uses a
 * text input box to accept new paging numbers (arrow keys are also allowed
 * for), and four standard navigation buttons are also presented to the end
 * user.
 *
 *  @name Navigation with text input
 *  @summary Shows an input element into which the user can type a page number
 *  @author [Allan Jardine](http://sprymedia.co.uk)
 *
 *  @example
 *    $(document).ready(function() {
 *        $('#example').dataTable( {
 *            "sPaginationType": "input"
 *        } );
 *    } );
 */

$.fn.dataTableExt.oPagination.input = {
    
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
    {
        var 
nFirst = document.createElement( 'span' );
        var 
nPrevious = document.createElement( 'span' );
        var 
nNext = document.createElement( 'span' );
        var 
nLast = document.createElement( 'span' );
        var 
nInput = document.createElement( 'input' );
        var 
nPage = document.createElement( 'span' );
        var 
nOf = document.createElement( 'span' );

        
nFirst.innerHTML = oSettings.oLanguage.oPaginate.sFirst;
        
nPrevious.innerHTML = oSettings.oLanguage.oPaginate.sPrevious;
        
nNext.innerHTML = oSettings.oLanguage.oPaginate.sNext;
        
nLast.innerHTML = oSettings.oLanguage.oPaginate.sLast;

        
nFirst.className = "paginate_button first disabled";
        
nPrevious.className = "paginate_button previous disabled";
        
nNext.className="paginate_button next";
        
nLast.className = "paginate_button last";
        
nOf.className = "paginate_of";
        
nPage.className = "paginate_page";
        
nInput.className = "paginate_input";

        if ( 
oSettings.sTableId !== '' )
        {
            
nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' );
            
nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' );
            
nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' );
            
nNext.setAttribute( 'id', oSettings.sTableId+'_next' );
            
nLast.setAttribute( 'id', oSettings.sTableId+'_last' );
        }

        
nInput.type = "text";
        
nPage.innerHTML = "Page ";

        
nPaging.appendChild( nFirst );
        
nPaging.appendChild( nPrevious );
        
nPaging.appendChild( nPage );
        
nPaging.appendChild( nInput );
        
nPaging.appendChild( nOf );
        
nPaging.appendChild( nNext );
        
nPaging.appendChild( nLast );

        $(
nFirst).click( function ()
        {
            var 
iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
                if (
iCurrentPage != 1)
                {
                
oSettings.oApi._fnPageChange( oSettings, "first" );
                
fnCallbackDraw( oSettings );
                $(
nFirst).addClass('disabled');
                $(
nPrevious).addClass('disabled');
                $(
nNext).removeClass('disabled');
                $(
nLast).removeClass('disabled');
                }
        } );

        $(
nPrevious).click( function()
        {
            var 
iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
                if (
iCurrentPage != 1)
                {
                
oSettings.oApi._fnPageChange(oSettings, "previous");
                    
fnCallbackDraw(oSettings);
                    if (
iCurrentPage == 2)
                    {
                        $(
nFirst).addClass('disabled');
                        $(
nPrevious).addClass('disabled');
                    }
                    $(
nNext).removeClass('disabled');
                    $(
nLast).removeClass('disabled');
            }
        } );

        $(
nNext).click( function()
        {
            var 
iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
            if (
iCurrentPage != Math.ceil((oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)))
            {
                
oSettings.oApi._fnPageChange(oSettings, "next");
                
fnCallbackDraw(oSettings);
                if (
iCurrentPage == (Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1))
                {
                    $(
nNext).addClass('disabled');
                    $(
nLast).addClass('disabled');
                }
                $(
nFirst).removeClass('disabled');
                $(
nPrevious).removeClass('disabled');
            }
        } );

        $(
nLast).click( function()
        {
            var 
iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
                if (
iCurrentPage != Math.ceil((oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)))
                {
                    
oSettings.oApi._fnPageChange(oSettings, "last");
                    
fnCallbackDraw(oSettings);
                    $(
nFirst).removeClass('disabled');
                    $(
nPrevious).removeClass('disabled');
                    $(
nNext).addClass('disabled');
                    $(
nLast).addClass('disabled');
                }
        } );

        $(
nInput).keyup( function (e) {
            
// 38 = up arrow, 39 = right arrow
            
if ( e.which == 38 || e.which == 39 )
            {
                
this.value++;
            }
            
// 37 = left arrow, 40 = down arrow
            
else if ( (e.which == 37 || e.which == 40) && this.value > 1 )
            {
                
this.value--;
            }

            if ( 
this.value === "" || this.value.match(/[^0-9]/) )
            {
                
/* Nothing entered or non-numeric character */
                
this.value = this.value.replace(/[^d]/g, ''); // don't even allow anything but digits
                
return;
            }

            var 
iNewStart = oSettings._iDisplayLength * (this.value - 1);
                if (
iNewStart < 0)
                {
                    
iNewStart = 0;
                }
                if (
iNewStart > oSettings.fnRecordsDisplay())
                {
                    
iNewStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
                }

                if (
iNewStart === 0)
                {
                    $(
nFirst).addClass('disabled');
                    $(
nPrevious).addClass('disabled');
                    $(
nNext).removeClass('disabled');
                    $(
nLast).removeClass('disabled');
                }
                else if (
iNewStart == ((Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength))
                {
                    $(
nNext).addClass('disabled');
                    $(
nLast).addClass('disabled');
                    $(
nFirst).removeClass('disabled');
                    $(
nPrevious).removeClass('disabled');
                }
                else
                {
                    $(
nFirst).removeClass('disabled');
                    $(
nPrevious).removeClass('disabled');
                    $(
nNext).removeClass('disabled');
                    $(
nLast).removeClass('disabled');
                }

            
oSettings._iDisplayStart = iNewStart;
            
fnCallbackDraw( oSettings );
        } );

        
/* Take the brutal approach to cancelling text selection */
        
$('span', nPaging).bind( 'mousedown', function () { return false; } );
        $(
'span', nPaging).bind( 'selectstart', function () { return false; } );
        
        
// If we can't page anyway, might as well not show it
        
var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
        if(
iPages <= 1)
        {
            $(
nPaging).hide();
        }
    },


    
"fnUpdate": function ( oSettings, fnCallbackDraw )
    {
        if ( !
oSettings.aanFeatures.p )
        {
            return;
        }
        var 
iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
        var 
iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;

        var 
an = oSettings.aanFeatures.p;
        if (
iPages <= 1) // hide paging when we can't page
        
{
            $(
an).hide();
        }
        else
        {
            
/* Loop over each instance of the pager */
            
for (var i = 0, iLen = an.length ; i < iLen ; i++)
            {
                var 
spans = an[i].getElementsByTagName('span');
                var 
inputs = an[i].getElementsByTagName('input');
                
spans[3].innerHTML = " of " + iPages;
                
inputs[0].value = iCurrentPage;
            }
        }
    }
};
?>
Онлайн: 3
Реклама