我正在使用Datatable(DataTables 1.10.10)和Datatable Editor。对于我的服务器端脚本/表(500000行),我想要一个数字和一个日期范围过滤器。由于简单的文本过滤器工作正常。在哪里以及如何修改范围过滤器的data.php
?这是我的设置:
<html>
<input data-column="2" id="min" name="min" type="number" min="0" max="500000">
<input data-column="2" id="max" name="max" type="number" min="0" max="500000">
</html>
我的剧本:
var table = $('#my-table').DataTable( {
dom: "Blfrtip",
ajax: {
url: "/data.php",
type: "POST",
data: function (d) {
d.minDate = $('#min').val();
d.maxDate = $('#max').val();
},
}
...
});
$('#min, #max').keyup( function() {
table.ajax.reload();
});
我是否需要在.... data中进一步定义值:
function (d) { d.minDate = $('#min').val(); d.maxDate = $('#max').val(); } },
...
跟......一样:
function( settings, data, dataIndex ) {
var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );
var id = parseFloat( data[6] ) || 0;
if ( ( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && id <= max ) ||
( min <= id && isNaN( max ) ) ||
( min <= id && id <= max ) )
{
return true;
}
return false;
}
答案 0 :(得分:2)
不,你不要!
function( settings, data, dataIndex ) {
var min = parseInt( $('#min').val(), 10 );
var max = parseInt( $('#max').val(), 10 );
var id = parseFloat( data[6] ) || 0;
if ( ( isNaN( min ) && isNaN( max ) ) ||
( isNaN( min ) && id <= max ) ||
( min <= id && isNaN( max ) ) ||
( min <= id && id <= max ) )
{
return true;
}
return false;
}
仅适用于您的数据表实例完全在前端工作的时候。
现在您已通过d.minDate
&amp; d.maxDate
到服务器,尝试通过服务器端的$_POST
数组捕获它们,然后在数据库查询(或用于检索数据的任何基础结构)中使用,如:
$query = '... WHERE date >= minDate & date <= maxDate ...';
使用这些参数过滤数据。
答案 1 :(得分:0)
你可以看到:
<input type="number" min="0" max="500000">
而不是:
<input type="text">
因此,在这种情况下,您应该为文本输入添加验证