在bootstrap datetimepicker中设置默认值会导致弹出窗口中出现NaN

时间:2014-06-27 07:54:53

标签: javascript bootstrap-datetimepicker

我正在使用Ruby + Bootstrap框架开发一个项目,包括Bootstrap datetimepicker插件。

我的表格中有一个字段:

<div class='datetimepicker-input input-group' id='logged_at'>
    <input class='form-control' data-format='DD/MM/YYYY hh:mm A' name='logged_at' type='text' value='27/06/2014 05:08 PM'>
        <span class='input-group-addon'>
            <i class='fa fa-calendar'></i>
        </span>
    </input>
</div>

正如您所看到的,我希望我的datetimepicker使用DD/MM/YYYY hh:mm A格式,但是,当我在value标记的<INPUT>属性中输入默认日期和时间时表单,然后点击日历图标以弹出选择器,选择器窗口只在标题中显示NaN,并且不允许我选择日期或时间。

但是,如果我在生成表单时将value属性留空,则弹出窗口工作正常。

我还注意到,如果我在字段中输入默认日期,并交换月份和日期,即MM/DD/YYYY hh:mm A,则弹出窗口工作正常,即日历默认为正确的日期,但是当我选择日期时,输入字段中 显示 DD/MM/YYYY hh:mm A

我想知道是否还有其他方法可以在字段中设置默认日期/时间?简单地填充value属性似乎让插件混乱,因为它似乎想要以mm / dd / yyyy为单位的初始日期......但是很高兴将其显示为dd / mm / yyyy ......之后。

1 个答案:

答案 0 :(得分:0)

好的,我想我已经把这个想出来了。它似乎与moment.js有关,bootstrap-datetimepicker依赖于日期解析。

在不搞乱语言选项的情况下, bootstrap-datetimepicker.js (第222行)中有一行必须更改:

if (dateStr) picker.date = moment(dateStr);

if (dateStr) picker.date = moment(dateStr, picker.format);

基本上我们必须使用picker.format作为第二个参数来强制提及使用我们在INPUT字段中提供的格式来解析输入的日期。