当前位置: 代码迷 >> JavaScript >> Bootstrap Table Filterby ,按日期范围过滤,不显示任何内容
  详细解决方案

Bootstrap Table Filterby ,按日期范围过滤,不显示任何内容

热度:59   发布时间:2023-06-05 10:18:15.0

目前使用的是wenzhixin 的Bootstrap Table 库。 这个在这里 。 我遇到了 filterby 选项的问题。 我通过 PHP 代码的 Echoing 创建了表格,而不是使用 json 来导入数据。所以实际上它仍然是一个基于 HTML 的表格。 我遇到的主要问题是按日期范围过滤行。 我还使用 moment.js 脚本来编译要在引导表 filterby 中使用的日期数组。

这是我想要实现的 JSfiddle 示例。 正如您在尝试选择要过滤的日期时所看到的,尽管 moment.js 可以工作,但 filterby 不会返回任何内容。

$(function() 
{
$('#table').bootstrapTable()
}
)

//Moment.JS Return Date Ranges
function getDates(startDate, stopDate) {
var dateArray = [];
var currentDate = moment(startDate);
var stopDate = moment(stopDate);
while (currentDate <= stopDate) {
    dateArray.push( '"'+moment(currentDate).format('YYYY-MM-DD')+'"' )
    currentDate = moment(currentDate).add(1, 'days');
}
return dateArray;
}


 $('#ok').click( function() 
 { 

var $table = $('#table')
var from=$("input[type=date][name=date1]" ).val();
var to=$("input[type=date][name=date2]" ).val();
  alert(getDates(from,to))
$table.bootstrapTable('filterBy',{ ETA:[getDates(from,to)]}) 



})

日期数组需要去掉双引号,filterBy 参数接受一维数组。

例子:

$(function() {
    $('#table').bootstrapTable()
})

//Moment.JS Return Date Ranges
function getDates(startDate, stopDate) {
    var dateArray = [];
    var currentDate = moment(startDate);
    var stopDate = moment(stopDate);
    while (currentDate <= stopDate) {
        dateArray.push(moment(currentDate).format('YYYY-MM-DD'))
        currentDate = moment(currentDate).add(1, 'days');
    }
    return dateArray;
}


$('#ok').click(function() {

    var $table = $('#table')
    var from = $("input[type=date][name=date1]").val();
    var to = $("input[type=date][name=date2]").val();
    alert(getDates(from, to))
    $table.bootstrapTable('filterBy', {
        ETA: getDates(from, to)
    })



})
  相关解决方案