我正在使用Fedemotta(https://github.com/fedemotta/yii2-widget-datatables)的Yii2和DataTables扩展。现在,我需要为表添加列过滤器。所以我正在做
$(document).ready(function() {
$('#datatables_cards-list').append('<tfoot><tr></tr></tfoot>');
$('#datatables_cards-list thead th').each( function () {
var title = $(this).text();
$('#datatables_cards-list tfoot tr').append( '<th rowspan="1" colspan="1"><input type="text" placeholder="Шукати '+title+'" /></th> ' );
} );
// DataTable
var table = $('#datatables_cards-list').DataTable();
// Apply the search
table.columns().every( function () {
var that = this;
$( 'input', this.footer() ).on( 'keyup change', function (e) {
e.preventDefault();
if ( that.search() !== this.value ) {
that
.search( this.value )
.draw();
}
} );
} );
} );
这是dataTables网站上的示例,但就我的表而言,<tfoot>
尚未通过js添加。问题是,它什么也没找到。无论我在搜索字段中键入什么,都说什么都没找到。当我将搜索输入直接放在表标题上时,它会起作用,但是如果我单击输入,则列排序会发生变化,因为我单击了它的标题。
这是PHP代码
DataTables::widget([
'dataProvider' => $cards,
'filterModel'=>$fModel,
'id'=>'cards-list',
'clientOptions'=>[
'language'=>Yii::$app->params['dataTablesLang'],
],
'columns' => [
'balance',
.....
]
]);