Bootstrap日期选择器格式在显示时的日期与在值上的不同

Cap*_*ack 10 javascript formatting datetime datepicker twitter-bootstrap

我想使用Twitter Bootstrap的datepicker.我希望以mm/dd/yyyy格式输入到DISPLAY,但是我希望它创建/传递的对象的值应该是yyyy-mm-dd.我知道这个属性:

"data-date-format" => "mm-dd-yyyy"
Run Code Online (Sandbox Code Playgroud)

但这会改变日期显示的方式以及值的格式.我的JS中也有这个:

$(this).datepicker({
  format: 'yyyy-mm-dd',
  autoclose: true,
  todayHighlight: true,
  pickTime: false
});
Run Code Online (Sandbox Code Playgroud)

我不确定格式部分正在做什么,但更改它不会更改输入创建的值.

Jar*_*nce 5

当我遇到这样的问题时,我希望数据以不同于我希望传达的方式显示,我通常会编写一个简短的脚本将值复制到一个隐藏元素中,在那里我维护用户不知道的“正确”格式的数据看。

这是我目前可以提供的最佳解决方案,因为我不知道有什么方法可以说服 Bootstrap Datepicker 同时使用两种格式。


Sah*_*avi 2

bootstrap 有一个解决方案来解决这个问题。

正如文档中所说

您可以将 format 设置为具有 2 个解析函数的对象:toValue 和 toDisplay。

$('.datepicker').datepicker({
format: {
    /*
     * Say our UI should display a week ahead,
     * but textbox should store the actual date.
     * This is useful if we need UI to select local dates,
     * but store in UTC
     */
    toDisplay: function (date, format, language) {
        var d = new Date(date);
        d.setDate(d.getDate() - 7);
        return d.toISOString();
    },
    toValue: function (date, format, language) {
        var d = new Date(date);
        d.setDate(d.getDate() + 7);
        return new Date(d);
    }
  },
   autoclose: true 
});
Run Code Online (Sandbox Code Playgroud)

  • 这根本没有解决最初的问题:显示的日期仍然是表单提交上发布的日期。这只允许您定义字符串到日期和日期到字符串转换函数,以便可以与日历视图一致地手动编辑输入字段。 (17认同)
  • 这是完美的解决方案。谢谢。 (2认同)