【问题标题】:How to set default time and minute如何设置默认时间和分钟
【发布时间】:2014-05-19 05:09:56
【问题描述】:

在查看约会选项卡内的fiddle 中,有添加计时按钮。当我单击该按钮时,会添加一个新行。现在,当我单击日历图标时,会弹出一个显示当前小时和分钟。但我希望它显示 00:00。哪位大神能告诉我怎么办?

我尝试修改引导日期时间选择器source code中的setDate方法@

setLocalDate: function (localDate) {
    if (!localDate) 
        this.setValue(null);
    else 
        this.setValue(Date.UTC(localDate.getFullYear(), localDate.getMonth(), localDate.getDate(), localDate.getHours(), localDate.getMinutes(), localDate.getSeconds(), localDate.getMilliseconds()))
},

setLocalDate: function (localDate) {
    if (!localDate) 
        this.setValue(null);
    else 
        this.setValue(00, 00, 00, 00,00, 00, 00))
},

但它不起作用。请任何人告诉我我还需要改变什么

【问题讨论】:

  • @RobG 谢谢,我会尽力让你知道
  • @RobG 我试过你的方法,但它仍然显示当前时间
  • 无论如何我都不会去弄乱图书馆。根据(极小)documentation,您应该使用.datepicker('setValue', value),其中 value 可以是“指定格式的字符串或 Date 对象”。

标签: javascript jquery twitter-bootstrap knockout.js knockout-2.0


【解决方案1】:

正如@RobG 已经说过的,您可以简单地在初始化例程中设置值

ko.bindingHandlers.datepicker1 = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        $(function () {
            $(element).parent().datetimepicker({
                pickDate: false,
                pickSeconds: false,
                minuteStep: 10
            });

            $(element).parent().datetimepicker('setValue', '00:00');
        });

// ...

查看更新的JSFiddle

更新:

如果您只想将00:00 作为默认值,则必须先从valueAccessor 中选择值,然后设置00:00,如果该值未定义

init: function (element, valueAccessor, allBindingsAccessor) {
    $(function () {
        $(element).parent().datetimepicker({
            pickDate: false,
            pickSeconds: false,
            minuteStep: 10
        });

        var accessor = valueAccessor();
        var val = ko.unwrap(accessor) || '00:00';
        $(element).parent().datetimepicker('setValue', val);
    });

// ...

JSFiddle

更新:

很遗憾,我找不到任何关于版本 2.2.0 的文档。 测试,如果访问器是一个函数,似乎工作

var val = valueAccessor();
if (typeof(val) == 'function')
    val = val();

$(element).parent().datetimepicker('setValue', val || '00:00');

更新JSFiddle

【讨论】:

  • 感谢您的回答,+1
  • 我只想将 00:00 显示给动态创建的行。例如,当您单击“添加计时”按钮时,会添加一行,而我只想在此日期选择器中显示 00:00。但我不想显示旧行
  • 它给了我错误uncaught TypeError: undefined is not a function 在这一行var val = ko.unwrap(accessor) || '00:00';
  • 可能是版本问题。小提琴使用的是淘汰赛 3,但在我的项目中我使用的是淘汰赛 2.2.0
  • 我用 Knockout 2.2.0 尝试过它,它抱怨 ko.unwrap。不幸的是,我找不到任何关于 2.2.0 版的文档。
猜你喜欢
  • 2013-03-01
  • 2023-01-06
  • 1970-01-01
  • 2013-06-24
  • 2018-08-26
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多