Мне нужно, чтобы мои Datatables имели поиск по столбцу, а у некоторых есть выбор вариантов поиска и некоторый свободный ввод текста. Я следовал за некоторыми примерами поиска на сайте Datatables, и код работал нормально, но я понятия не имею, как работают некоторые вызовы. Функция вызывается после завершения init.
Спасибо,
1) что это делает ??? var val = $ .fn.dataTable.util.escapeRegex ($ (this) .val ());
2) почему регулярное выражение используется для поиска ??? column .search (val? '^' + val + '$': '', true, false) .draw ();});
3) почему это сравнение ??? if (that.search ()! == this.value) {
function () {
this.api().columns().every( function (idx) {
var column = this;
if (idx == 1 || idx == 3) {
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
); // **** what does this do ??? ****
column
.search( val ? '^'+val+'$' : '', true, false ) // **** why regex is used for search ??? ***
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} else {
if (idx == 0) $(column.footer()).html('<input disabled type="text" placeholder="Disabled" />' );
else $(column.footer()).html('<input type="text" placeholder="Search" />' );
var that = this;
$( 'input', this.footer() ).on( 'keyup change clear', function () {
if ( that.search() !== this.value ) { // ****why this comparison ??? ****
that
.search( this.value )
.draw();
}
} );
}
} );
}