Jquery数据表列搜索案例不敏感

时间:2016-07-29 10:16:21

标签: jquery datatables case-insensitive

这是我的情景: 我有一个以这种方式初始化的数据表:

invoicesDataTable = $('#invoicesDataTable').DataTable({

                processing: true,
                serverSide: true,
                searchDelay: 1000,
                search: {
                    caseInsensitive: true
                },
                ajax: {
                    type: 'GET',
                    url: '{!! route("admin.invoice.filterData") !!}',
                    dataSrc: function (response) {
                        return response.data;
                    }
                },
//              aLengthMenu: [ [ 50, 100, 150, 200, -1 ], [ 50, 100, 150, 200, 'All' ] ],
                columns: [
                    {data: 'document_number', name: 'invoices.document_number', orderable: false},
                    {data: 'document_type', name: 'invoices.document_type', orderable: false},
                    {data: 'tax_regime', name: 'invoices.tax_regime', orderable: false},
                    {data: 'auction_id', name: 'auctions.auction_id', orderable: false},
                    {data: 'business_name', name: 'customers.business_name', orderable: false},
                    {data: 'total_amount', name: 'invoices.total_amount', orderable: false},
                    {data: 'datetime_invoice', name: 'invoices.datetime_invoice', orderable: false},
                    {data: 'actions', name: 'actions', orderable: false, searchable: false}
                ],
            });

初始化后,我以这种方式在每列上添加搜索:

$('#invoicesDataTable thead th').each(function () {
            var title = $(this).text();
            $(this).html('<input type="text" style="width:100%;" placeholder="' + title + '" />');
        });

        invoicesDataTable.columns().every(function () {
            var that = this;
            $('input', this.header()).on('keyup change', function () {
                if (that.search() !== this.value)
                    that.search(this.value, false, true, true).draw();
            });
        });

除了不区分大小写的搜索外,它的工作正常。如果我有一个像“John”这样的值的列,并且我搜索“john”,则它不向我显示带有“John”的行。有一种方法可以使它有效吗? (全局搜索在不区分大小写的情况下完美运行)

3 个答案:

答案 0 :(得分:0)

将您的比较全部用大写或小写。

例如:

 if (that.search().toLowerCase() !== this.value.toLowerCase())

 if (that.search().toUpperCase() !== this.value.toUpperCase())

答案 1 :(得分:0)

那是sql方面的问题。 SQL基本上执行区分大小写的搜索。 如果使用sql或postgres,请使用“ ILIKE”。

参考:I referred here to solve the same issue

答案 2 :(得分:0)

检查您的database collation。它会影响区分大小写的搜索。