引导3 Datepicker v4:当datepicker内联时不会触发dp.show和dp.change事件

时间:2016-05-17 16:08:07

标签: javascript jquery twitter-bootstrap-3 bootstrap-datetimepicker

我正在使用enum

我有一个内联的datepicker正确显示,我只会使用days模式,所以我使用以下代码,但事件dp.show和dp.update不会被触发。

$('#datetimepicker').datetimepicker({
    inline: true,
    format: 'DD/MM/YYYY'
}).on('dp.show dp.update', function () {
    $(".datepicker-days").find("th").eq(1).removeAttr('title')
    .css('cursor', 'default')
    .css('background', 'inherit').on('click', function (e) {
        e.stopPropagation();
    });
});

编辑1

我也尝试过使用dp.change(以及show.dp,update.dp,change.dp)。

如果日期选择器不是内联,则会触发事件。

编辑2

我正在使用:

  • 的jquery-1.12.3.min.js
  • moment.js / 2.13.0 / moment.min.js
  • moment.js / 2.13.0 /力矩与 - locales.min.js
  • 自举/ 3.3.6 / JS / bootstrap.min.js
  • 自举-的DateTimePicker / 37年4月17日/ JS /自举-datetimepicker.min.js

编辑3

版本4.17.42的相同问题

3 个答案:

答案 0 :(得分:2)

问题是当小部件内联时,dp.show事件不会触发。

根据插件文档,dp.show事件仅从toggle()show()函数发出,但仅限于在调用之前隐藏窗口小部件。

所以我的解决方案有点脏,但我认为它解决了你的问题。您可以在窗口小部件初始化后立即调用hide()show()函数。

$('#datetimepicker').datetimepicker({
    inline: true,
    format: 'DD/MM/YYYY'
}).on('dp.show dp.change', function () {
    // console.log('dp.show or dp.change event');
    $(".datepicker-days").find("th").eq(1)
        .removeAttr('title')
        .css('cursor', 'default')
        .css('background', 'inherit')
        .on('click', function (e) {
            e.stopPropagation();
        });
 });

$('#datetimepicker').data("DateTimePicker").hide();
$('#datetimepicker').data("DateTimePicker").show();

在这里小提琴:https://jsfiddle.net/zeudzqe1/

欢迎进一步改进这一回应。

答案 1 :(得分:0)

你试过dp.change吗? (而不是dp.show)

$('#datetimepicker').datetimepicker({
    inline: true,
    format: 'DD/MM/YYYY'
}).on('dp.change dp.update', function () {
    $(".datepicker-days").find("th").eq(1).removeAttr('title')
    .css('cursor', 'default')
    .css('background', 'inherit').on('click', function (e) {
        e.stopPropagation();
    });
});

答案 2 :(得分:0)

插件insists that the component is placed within a relatively positioned container

actually checks,并在需要时抛出错误:

  

datetimepicker组件应放在相对定位的容器中

未捕获的错误导致它在设计上放弃了其余的代码。

通过使父母相对定位来

I fixed it

JS

  // Disable support for comments and trackbacks in post types
function df_disable_comments_post_types_support() {
  $post_types = get_post_types();
foreach ($post_types as $post_type) {
    if(post_type_supports($post_type, 'comments')) {
        if (!$post_type=='product'){
        remove_post_type_support($post_type, 'comments');
        remove_post_type_support($post_type, 'trackbacks');
        }
    }
}
}

CSS

// no changes!
$('#datetimepicker').datetimepicker({
    inline: true,
    format: 'DD/MM/YYYY'
}).on('dp.show dp.update', function () {
    $(".datepicker-days").find("th").eq(1).removeAttr('title')
    .css('cursor', 'default')
    .css('background', 'inherit').on('click', function (e) {
        e.stopPropagation();
    });
});

HTML

.relatively-positioned {
  position: relative;
}