javascript - 使用 Bootstrap Datepicker 选择星期日期范围和月份

标签 javascript jquery twitter-bootstrap-3 bootstrap-datepicker

如何使用 Bootstrap Datepicker 选择周日期和月份的范围?

我目前正在使用 jQuery UI 日期选择器来选择月份和星期。

最佳答案

选择月份

$('input[name=month]').datepicker( {
    format: "MM, yyyy",
    minViewMode: 1,
    autoclose: true
} );

选择星期日期范围

为此需要对 CSS 进行一些更改。此外,下面的代码并不完全灵活,因为我没有找到任何方法从事件回调中获取插件设置。输出格式类似于 2015-4-19 到 2015-4-25。请参见 calculate_week_range() 函数。

$('input[name=week]').datepicker( {
    format: "yyyy-mm-dd",
    autoclose: true
}).on('show', function(e){

    var tr = $('body').find('.datepicker-days table tbody tr');

    tr.mouseover(function(){
        $(this).addClass('week');
    });

    tr.mouseout(function(){
        $(this).removeClass('week');
    });

    calculate_week_range(e);

}).on('hide', function(e){
    console.log('date changed');
    calculate_week_range(e);
});

var calculate_week_range = function(e){

    var input = e.currentTarget;

    // remove all active class
    $('body').find('.datepicker-days table tbody tr').removeClass('week-active');

    // add active class
    var tr = $('body').find('.datepicker-days table tbody tr td.active.day').parent();
    tr.addClass('week-active');

    // find start and end date of the week

    var date = e.date;
    var start_date = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
    var end_date = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 6);

    // make a friendly string

    var friendly_string = start_date.getFullYear() + '-' + (start_date.getMonth() + 1) + '-' + start_date.getDate()  + ' to '
        + end_date.getFullYear() + '-' + (end_date.getMonth() + 1) + '-' + end_date.getDate();

    console.log(friendly_string);

    $(input).val(friendly_string);

}

CSS

此 css 仅用于周选择器部分。

.datepicker table tr.week:hover{
    background: #eee;
}

.datepicker table tr.week-active,
.datepicker table tr.week-active td,
.datepicker table tr.week-active td:hover,
.datepicker table tr.week-active.week td,
.datepicker table tr.week-active.week td:hover,
.datepicker table tr.week-active.week,
.datepicker table tr.week-active:hover{
    background-color: #006dcc;
    background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
    background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
    background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
    background-image: -o-linear-gradient(top, #0088cc, #0044cc);
    background-image: linear-gradient(top, #0088cc, #0044cc);
    background-repeat: repeat-x;
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
    border-color: #0044cc #0044cc #002a80;
    border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
    filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
    color: #fff;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}

稍后我会为两者制作 jsfiddle 示例。

关于javascript - 使用 Bootstrap Datepicker 选择星期日期范围和月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30344470/

相关文章:

javascript - 如何通过带有 vendor 前缀的 jquery 修改 css?

javascript - 访问 json 中的属性数组

javascript - 使用图像制作图书阅读器 [jquery]

javascript - 如何删除 dataTables 按钮的默认按钮类?

php stripos if 页面 ==

html - 使用@media 时有没有办法不重复样式?

javascript - 通过 ids 创建 2 个 mongodb 集合之间的多对多关系

javascript - 通过查找其行号获取元素

jquery - Readmore.js 在 Bootstrap 3 Modal 中不起作用

javascript - 链接跳转到顶部和底部但平滑滚动不起作用