微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 如何修复mvc中datetime属性上的“字段必须是日期”

我需要为我的模型属性捕获日期和时间.在我的模型课中,我有以下内容
[required]
[DataType(DataType.DateTime)]
public DateTime? CallBackDate { get; set; }

当我输入有效的日期时间(例如2015年5月28日15:55)时,我不断收到此错误.字段CallBackDate必须是日期.

我已经看到类似的问题并尝试了各种答案,但似乎没有什么可以摆脱这个.我使用不显眼的客户端验证,我无法禁用它.

输入字段的来源具有以下标记

<input autocomplete="off" class="jquery_datetimepicker form-control hasDatepicker" data-val="true" data-val-date="The field CallBackDate must be a date." data-val-required="The CallBackDate field is required." id="CallBackDate" name="CallBackDate" placeholder="Enter your CallBackDate" type="text" value="">

并且jquery日期时间选择器具有以下标记

$('.jquery_datetimepicker').datetimepicker({
    dateFormat: 'dd/mm/yy',minDate: 0,showWeeks: true,showStatus: true,highlightWeek: true,numberOfMonths: 1,showAnim: "scale",showOptions: {
        origin: ["top","left"]
    },timeFormat: 'hh:mm tt'
});

有任何想法吗?谢谢

解决方法

由于jquery.validate.unobtrusive.min.js中的MVC错误(即使在MVC 5中),它不会以任何方式接受日期/日期时间格式,因此可能会发生客户端验证问题.它不是由datepicker或浏览器引起的.不幸的是你必须手动解决它.

我最终的解决方案:

你必须包括

@Scripts.Render("~/Scripts/jquery-3.1.1.js")
@Scripts.Render("~/Scripts/jquery.validate.min.js")
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js")
@Scripts.Render("~/Scripts/moment.js")

您可以使用以下命令安装moment.js:

Install-Package Moment.js

然后你最终可以为日期格式解析器添加修复:

$(function () {
    $.validator.methods.date = function (value,element) {
        return this.optional(element) || moment(value,"DD.MM.YYYY",true).isValid();
    }
});

原文地址:https://www.jb51.cc/jquery/181549.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐