【问题标题】:How to pass value to the filter in DataTable?如何将值传递给 DataTable 中的过滤器?
【发布时间】:2014-09-13 00:22:18
【问题描述】:

我需要自定义过滤器,我在数据表中使用特殊功能,它过滤,但是当我查看我对过滤器的请求时,发送到过滤器的值总是空的。

我的代码:

jQuery(document).ready(function() {
     var table = jQuery('#example2').DataTable();
        jQuery("#segment").on("change", function(e) {
            var segment = jQuery('#segment').select2('data').text;
            table.draw();
    } );

我用它来推送值,我没有从这里得到任何东西,即使在 console.log 中

//filter push
    jQuery.fn.dataTableExt.afnFiltering.push(
        function( oSettings, aData, iDataIndex ) {

            //main filter
            var segment = jQuery('#segment').select2('data').text;
            var marke   = jQuery('#model').select2('data').text;

            console.log(segment);
            if( aData[1]== segment ||
                aData[3]== marke )
            {
                return true;
            }
            return false;

        }
    );

【问题讨论】:

  • 试试var segment = jQuery('#segment').select2('data').text();
  • 我得到的字符串不是函数,我不认为它有问题。问题是我无法访问“jQuery.fn.dataTableExt.afnFiltering.push”,因为当我尝试 console.log 虚拟数据时,它没有显示。
  • 好的 - 但如果没有更多代码,我们无法确定您是否 (a) 定义了扩展,(b) 正确调用它?
  • 我是数据表的新手,我通过编写“jQuery.fn.dataTableExt.afnFiltering.push”来定义扩展。你怎么定义?其余代码调用 ajax 请求并使用 ajax 处理我使用的是这个示例 datatables.net/development/filtering
  • 好的 - 你这里有 2 件事,Datatables 看起来没问题,然后 select2 刚刚查了一下,我认为你想要的语法是 $("#segment").select2("val") 等等。跨度>

标签: jquery datatable filtering jquery-datatables


【解决方案1】:

您只需返回truefalse 即可使过滤器正常工作。您可以像当前那样获取segmentmarke 的值。只需通过console.log(segment, marke)alert(segment, marke) 测试它们是否确实在检索值,只要您获得正确的值,一切都应该正常工作。可能会显示您的 HTML。

jQuery(document).ready(function() {
     var table = jQuery('#example2').DataTable();
        jQuery("#segment").on("change", function(e) {
            // You do not need this as filter is run on a new table.draw();
            // var segment = jQuery('#segment').select2('data').text;
            table.draw();
    } );

//filter push
    jQuery.fn.dataTableExt.afnFiltering.push(
        function( oSettings, aData, iDataIndex ) {

            //main filter
            var segment = jQuery('#segment').select2('val');
            var marke   = jQuery('#model').select2('val');
            //Check whether you are getting an output from the log method below in your console
            console.log(segment, marke);
            if( aData[1]== segment ||
                aData[3]== marke )
            {
                return true;
            }
            return false;

        }
    );

【讨论】:

    猜你喜欢
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2018-04-14
    • 2012-08-25
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多