这是我的情景: 我有一个以这种方式初始化的数据表:
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”的行。有一种方法可以使它有效吗? (全局搜索在不区分大小写的情况下完美运行)
答案 0 :(得分:0)
将您的比较全部用大写或小写。
例如:
if (that.search().toLowerCase() !== this.value.toLowerCase())
或
if (that.search().toUpperCase() !== this.value.toUpperCase())
答案 1 :(得分:0)
那是sql方面的问题。 SQL基本上执行区分大小写的搜索。 如果使用sql或postgres,请使用“ ILIKE”。
答案 2 :(得分:0)
检查您的database collation。它会影响区分大小写的搜索。