当值设置为超过最大日期时,Kendo Datepicker 显示错误的格式

Posted

技术标签:

【中文标题】当值设置为超过最大日期时,Kendo Datepicker 显示错误的格式【英文标题】:Kendo Datepicker shows wrong format when value is set past max date 【发布时间】:2014-08-09 05:53:03 【问题描述】:

我在开始日期和结束日期的页面上有一对 Kendo Datepicker 字段。开始日期默认为今天的日期,结束日期默认为一年后的今天。允许用户从 Kendo Datepicker 日历中选择日期或手动输入日期。

结束日期字段上的 Datepicker 日历弹出窗口设置了“最大”选项,因此它不会显示超过一年的日期,但用户可以手动输入较晚的日期。如果他们这样做并在我的表单上单击提交,服务器端验证将发现问题并再次显示表单并显示错误。

我想保留用户在 Datepicker 字段中手动输入的日期不变,以便他们可以看到问题的根源,但在日历中保留“最大”选项。但是,当我使用“最大值”和最大值之后的“值”设置 Datepicker 选项时,它会以错误的格式显示值。

复制方法如下:

html

<!-- Note future date in 'value' attribute. -->
<input id='dateField' style="width: 100%;" type="text" value="20160618">

JS:

var dateField = $("#dateField");

// The DatePicker's value comes from the dateField's 'value' attribute.
var value = moment(dateField.val(), 'YYYYMMDD').toDate(); // moment().toDate() gives a javascript Date object.

// Initialize the date picker options object with some common settings.
datePickerOptions = 
    format: 'MM/dd/yyyy',
    value: value,


// Set the max to be one year from now.
datePickerOptions.max = new Date(moment(new Date()).add('years', 1).toDate());

// Initialize the DatePicker.
dateField.kendoDatePicker(datePickerOptions);

// Here's a workaround I found... After initializing the picker, manually set the value back to the correctly formatted string.
//dateField.val(moment(value).format('MM/DD/YYYY'));

jsFiddle with the above code.

将输入标签的'value'属性设置为最大日期之后的日期,日期将显示如下:

2015 年 6 月 19 日星期五 00:00:00 GMT-0700(太平洋标准时间)

而不是应该如何:

2015 年 6 月 15 日

这是一个剑道错误还是被设计破坏了?还是我在某个地方搞砸了?

【问题讨论】:

【参考方案1】:

是的,看起来控件工作正常。问题是控件在测试最大值时很快失败,这意味着它不应用其他一些选项(例如格式)。我会投票支持设计中断。

试试这个...

datePickerOptions = 
    format: 'MM/dd/yyyy',
    value: moment(value).format('MM/DD/YYYY'),
    max: new Date(moment(new Date()).add('years', 1).toDate())

【讨论】:

这似乎有效。此外,您不需要最大值周围的 new Date(),moment().toDate() 返回一个 JS 日期对象,并在 JSFiddle 中玩耍,看起来它只是所需值的 format()。谢谢。

以上是关于当值设置为超过最大日期时,Kendo Datepicker 显示错误的格式的主要内容,如果未能解决你的问题,请参考以下文章

我想在方法下设置 datepicker-options 最小和最大日期

当值设置为 null 时,幕后会发生啥?

设置发送到控制器的 Kendo DateTimePicker 日期格式

Kendo DatePicker - 使用下一个/上一个按钮时日期文本消失

日期选择器的 Kendo 自定义验证

动态设置 Kendo UI Slider 的最大值