Фильтр данных Jquery - PullRequest
       8

Фильтр данных Jquery

3 голосов
/ 15 марта 2012

У меня есть дата-фильтр для таблиц данных, использующих изображение календаря, и он прекрасно работает.Но когда я очищаю дату, она не отображает все даты.

Как сделать кнопку, чтобы показать все даты, которые очистили бы фильтр даты?

Любая помощь / совет по этому вопросу будетотлично, заранее спасибо.

// The plugin function for adding a new filtering routine
$.fn.dataTableExt.afnFiltering.push(
        function(oSettings, aData, iDataIndex){
            var dateStart = parseDateValue($("#dateStart").val());
            // aData represents the table structure as an array of columns, so the script access the date value 
            // in the first column of the table via aData[0]
            var evalDate= parseDateValue(aData[3]);

            if (evalDate == dateStart ) {
                return true;
            }
            else {
                return false;
            }

        });

// Function for converting a mm/dd/yyyy date value into a numeric string for comparison (example 08/12/2010 becomes 20100812
function parseDateValue(rawDate) {
    var dateArray= rawDate.split("/");
    var parsedDate= dateArray[1] + dateArray[0] + dateArray[3];
    return parsedDate;
}



$(function() {
    // Implements the dataTables plugin on the HTML table
    var $oTable= $("#example").dataTable( {
        "iDisplayLength": 20,
        "oLanguage": {
            "sLengthMenu": 'Show <select><option value="25">25</option><option value="50">50</option><option value="100">100</option><option value="200">200</option></select>'
        },
        "bJQueryUI": true,
        "aoColumns": [
                null,
                null,
                null,
                { "sType": "date" }
        ]                   
        }); 


    // The dataTables plugin creates the filtering and pagination controls for the table dynamically, so these 
    // lines will clone the date range controls currently hidden in the baseDateControl div and append them to 
    // the feedbackTable_filter block created by dataTables
    $dateControls= $("#baseDateControl").children("div").clone();
    $("#feedbackTable_filter").prepend($dateControls);

    // Implements the jQuery UI Datepicker widget on the date controls
    $('.datepicker').datepicker(
        {dateFormat: 'DD, d MM, yy', showOn: 'button', buttonImage: '../images/calendar.jpg', buttonImageOnly: true}
    );      

    // Create event listeners that will filter the table whenever the user types in either date range box or
    // changes the value of either box using the Datepicker pop-up calendar
    $("#dateStart").keyup ( function() { $oTable.fnDraw(); } );
    $("#dateStart").change( function() { $oTable.fnDraw(); } );

});

1 Ответ

4 голосов
/ 15 марта 2012

Ну, вы пробовали:

$.fn.dataTableExt.afnFiltering.push(
        function(oSettings, aData, iDataIndex){
            var dateStart = parseDateValue($("#dateStart").val());
            //if filter is empty return everything
            if(dateStart === ''){
                return true;
            }
            // aData represents the table structure as an array of columns, so the script access the date value 
            // in the first column of the table via aData[0]
            var evalDate= parseDateValue(aData[3]);

            if (evalDate == dateStart ) {
                return true;
            }
            else {
                return false;
            }

        });

если это не работает, вы можете опубликовать пример на jsfiddle?

РЕДАКТИРОВАТЬ - хорошо, проблема была в parseDateValue(), который ожидал создания даты с /. Поскольку вы хотите точное совпадение, вы можете опустить parseDateValue()

// The plugin function for adding a new filtering routine
$.fn.dataTableExt.afnFiltering.push(
    function(oSettings, aData, iDataIndex){
        var dateStart = $("#dateStart").val();
        //if filter is empty return everything
        if(dateStart === ''){
            return true;
        }
        // aData represents the table structure as an array of columns, so the script access the date value
        // in the first column of the table via aData[0]
        var evalDate= aData[3];

        if (evalDate == dateStart ) {
            return true;
        }
        else {
            return false;
        }

    });

скрипка здесь http://jsfiddle.net/eMZtV/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...