首页 文章

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

提问于
浏览
0

我正在使用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 格式,但是,当我在生成表单时在 <INPUT> 标签的 value 属性中输入默认日期和时间,然后单击日历图标以弹出选择器,选择器窗口只是在 Headers 中给我 NaN ,不会让我选择日期或时间 .

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

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

我想知道是否还有另一种方法我必须在字段中设置默认日期/时间?简单地填充 value 属性似乎让插件混乱,因为它似乎想要以mm / dd / yyyy ...开头的初始日期,但后来乐于将它显示为dd / mm / yyyy ......之后 .

1 回答

  • 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 作为第二个参数来强制 mention 使用我们在INPUT字段中提供的格式来解析输入的日期 .

相关问题