DataTable 1.10x jQuery列通过输入文本框服务器端进行筛选

时间:2014-10-19 00:56:13

标签: javascript php jquery datatable

我在输入元素中使用 DataTable 1.10 列过滤时出现问题。

jQuery(document).ready(function() {    

    dt_table = $('#datatable_list').DataTable( {
        "dom": "<'top'i>rt<'table-scrollable't>lp",
        "processing": true,
        "serverSide": true,
        "ajax": "ajax/list_json.php",
        "pageLength": 10,
        "autoWidth": false
    }); 

    $('#quickfind').on( 'keyup', function () { dt_table.search( this.value ).draw(); } );

});

正如您所看到的,我正在使用带有json输出的服务器端处理。总清单很好。

在表格中有一个带有4个输入的页脚:

    <tfoot>
        <tr>
            <th><input type="text" id="filters_0" name="filters_0" class="form-control form-filter"></th>
            <th><input type="text" id="filters_1" name="filters_1" class="form-control form-filter"></th>
            <th><input type="text" id="filters_2" name="filters_2" class="form-control form-filter"></th>
            <th><input type="text" id="filters_3" name="filters_3" class="form-control form-filter"></th>
        </tr>
    </tfoot>

我正在使用标准的 ssp.class.php 类。请使用这个简单的列过滤项目,我正在工作4天。

我想要的是简单的。 quickfind文本框非常适合搜索整个表格。但我想过滤每列。与'filters_0'一样,是产品的ID。但这不起作用。

请理解我使用的是最新的DataTabes 1.10。

1 个答案:

答案 0 :(得分:1)

在将字段作为搜索数据传递之前,首先必须序列化字段(在tfoot中)。 我使用外部表单,在提交时,只需执行以下操作:

dt_table = $('#datatable_list');
var formData = $('#search-form-orders').serialize();
dt_table.search( formData ).draw();

然后在服务器端,我不使用SSP而是使用自定义框架,所以:

// get the 'search' array from $_GET and don't forget to clean it !!!
if( $search['value'] !=='' )
    foreach (explode('&', $search['value']) as $chunk) {
        $param = explode("=", $chunk);
        $field = urldecode($param[0]);
        $value = urldecode($param[1]);
        $criterias[] = array( $field => $value );
    }

最后对待标准来构建请求