我需要我的数据表具有按列搜索,并且一些具有选择搜索选项和一些自由文本输入。我在Datatables网站上跟踪了一些搜索示例,并且代码工作正常,但是我不知道某些调用的工作方式。初始化完成后将调用该函数。
谢谢
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();
}
} );
}
} );
}