У меня есть jatery datatable, к которому применен пользовательский фильтр, который фильтрует строки на основе месяца и года.
Примененный пользовательский фильтр не перерисовывает таблицу, пока я не взаимодействую с таблицей послеприменение фильтра, например, путем ввода в строке поиска или сортировки строк из кнопок сортировки по умолчанию в заголовках столбцов.
datatable заполняется циклом php foreach
, который получает данные из базы данных.На самом деле это вид проекта CodeIgnitor.
Это мой пользовательский фильтр:
#month
и #year
- это идентификаторы двух html
select
входов.
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var month = parseInt($('#month').val(), 10);
var year = parseInt($('#year').val(), 10);
var date = data[0].split('-');
if (parseInt(date[1], 10) == month && parseInt(date[0], 10) == year)
{
return true;
}
return false;
}
);
$(document).ready(function() {
var table = $('#expenseList').DataTable();
$('#month, #year').keyup( function() {
table.draw();
});
});
всякий раз, когда я выбираю месяц или год, на данные не влияет, пока я не взаимодействую с некоторыми другими функциями таблицы по умолчанию, такими как кнопки поиска или сортировки.
РЕДАКТИРОВАТЬ:
Фильтры - это html select
меню, представленные как:
<table cellspacing="5" cellpadding="5">
<tbody>
<tr>
<td>Company:</td>
<td>
<select id="company" name="company">
<option value="" selected> Select </option>
<?php foreach($data['company'] as $c) { ?>
<option value="<?php echo $c->id; ?>"> <?php echo $c->company_name; ?> </option>
<?php } ?>
</select>
</td>
</tr>
<tr>
<td>Select Month/Year:</td>
<td>
<select id="month" name="month">
<?php
$month = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
for($i = 0; $i < 12; $i++) {
if(date('m') == $i+1) { ?>
<option value=<?php echo $i+1; ?> selected> <?php echo $month[$i]; ?> </option>
<?php } else { ?>
<option value=<?php echo $i+1; ?>> <?php echo $month[$i]; ?> </option>
<?php } } ?>
</select>
</td>
<td>
<select id="year" name="year">
<?php
for($i = 2000; $i < 2100; $i++) {
if(date("Y") == $i) { ?>
<option value=<?php echo $i; ?> selected> <?php echo $i; ?> </option>
<?php } else { ?>
<option value=<?php echo $i; ?>> <?php echo $i; ?> </option>
<?php } } ?>
</select>
</td>
</tr>
</tbody>
</table>
Проблема в том, что я использую select
s.С простыми input
полями он работает нормально.