Bootstrap datetimepicker输入密钥以填充初始日期

时间:2016-08-26 15:24:27

标签: javascript jquery twitter-bootstrap bootstrap-datetimepicker

Bootstrap datetimepicker,如下所示:http://eonasdan.github.io/bootstrap-datetimepicker/

具体来说,首次显示时,回车键应隐藏窗口小部件并将当前日期放入输入字段。这是我尝试过的一些东西:

有一个dp.hide事件,它没有向回调中注入线索。所以,你不知道它是如何被触发的。

$("#datePicker").on("dp.hide", function(e) {
    // e.notSquat
});

目前还不清楚datetimepicker的哪个DOM元素实际上是在内部接收一个回车键。它绝对不是输入元素:

// handler never gets called. css selector is correct
$("#datePicker input").keypress(function(e) {
   console.log(e.which);
});

通过跳转到datetimepicker.js本身的代码,我有点冒险了: https://raw.githubusercontent.com/Eonasdan/bootstrap-datetimepicker/master/src/js/bootstrap-datetimepicker.js

有线索,例如第2588行,但我的上帝必须有一个更简单的方法:

// line 2588
enter: function () {
        this.hide();
}

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

想出来,万一有人发现这有用。初始化插件时,我覆盖了keyBinds.enter属性。

$("#datePicker").datetimepicker({
    keyBinds: {
        enter: function(){
            if(this.date() === null) {
                this.date(moment());    // moment() is similar to new Date()
            }
            this.hide();
        }
    },
    useCurrent: false
});

答案 1 :(得分:0)

使用其他库遇到同样的问题-uxsolutions/bootstrap-datepicker v1.8.0 ..

经过简短的调查,我发现Enter键对我不起作用的原因是将forceParse选项设置为false文档中未说明 >)。

从Datepicker.prototype.keydown中获取的代码:

switch (e.keyCode) {
  case 13: // enter
    if (!this.o.forceParse)
      break;
}

请参见issue #2381