bootstrap datepicker隐藏选择日期范围

时间:2016-04-18 08:02:02

标签: jquery twitter-bootstrap jquery-ui-datepicker

我使用了bootstrap datepicker。现在,当我选择“自定义”以外的日期范围时,日期选择器会隐藏。当我选择“自定义”以外的选项而不是单击“应用”

时关闭时,我想让它保持可见
$('#demo').daterangepicker({
    ranges: {
        "autoApply": true,
        "setDate": new Date(),
        "dateFormat": 'yy-mm-dd',
        'Today': [moment(), moment()],
        'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
        'Last 7 Days': [moment().subtract(6, 'days'), moment()],
        'Last 30 Days': [moment().subtract(29, 'days'), moment()],
        'This Month': [moment().startOf('month'), moment().endOf('month')],
        'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
    },
    applyOnMenuSelect: false,
    "alwaysShowCalendars": true,
    "opens": "left",
    "applyClass": "btn-primary",
    "cancelClass": "hide-btn",
    "startDate": "04/14/2016",
    "endDate": "04/14/2016",
    "maxDate": "04/14/2016",
}, function(start, end, label) {
    console.log("New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' +
        end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')");
});

1 个答案:

答案 0 :(得分:0)

因此,您的问题是预定义范围被视为提交按钮,就像应用按钮一样!这就是在您点击任何范围后日历将隐藏的原因。

要使用库中的display: block!important事件显示日历,首先要添加show.daterangepicker以实现您想要的效果,您的代码将看起来像这样

$('#demo').on('show.daterangepicker',function(){
    // here we will add a class with display!important in it
    $('.daterangepicker').addClass('ishow');
});

很遗憾,您无法直接向该按钮添加点击事件,因此我们将使用一些委派,幸运的是jQuery为它提供了一个很好的简单实现。

$('body').delegate(".applyBtn", "click",function(){
    // this will be called when the apply button is clicked
    // we will remove the ishow class to hide the menu!
    $('.daterangepicker').removeClass('ishow');
});

那就是它!希望它可以帮助您完成项目,working fiddle可以看到解决方案的实际效果。

P.S。:不要像以前那样使用autoApply选项!