使用 jQuery 掩码时日期未正确显示

Posted

技术标签:

【中文标题】使用 jQuery 掩码时日期未正确显示【英文标题】:Date not being displayed properly when using jQuery mask 【发布时间】:2013-05-16 15:01:15 【问题描述】:

我正在尝试在我的 ASP MVC edit 页面上使用 this jQuery plugin 作为输入掩码。但是,无论数据库中存储的值是什么,月份总是以两个零显示:00/dd/yyyy。我已经通过 Visual Studio 中的代码单步执行并检查了存储在数据库中的实际值并验证它是正确的。

这是视图中的 jQuery。所有其他输入掩码在此页面上都能正常工作。 $('#Birthdate') 是有问题的。

$(document).ready(function ($) 
    $('#HomePhone').mask("(999) 999-9999? x99999");
    $('#BusinessPhone').mask("(999) 999-9999? x99999");
    $('#MobilePhone').mask("(999) 999-9999");
    $('#FaxNumber').mask("(999) 999-9999? x99999");
    $('#Birthdate').mask("99/99/9999");
    $('#HomeZip').mask("99999?-9999");
    $('#MailingZip').mask("99999?-9999");
    $('#LocationZip').mask("99999?-9999");
);

    <div class="M-editor-field">
        @html.EditorFor(model => model.Birthdate)
    </div>
    <div class="M-validator-field">
        @Html.ValidationMessageFor(model => model.Birthdate)
    </div>

这是我在页面上使用的 jquery。

<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
<script src="http://cloud.github.com/downloads/digitalBush/jquery.maskedinput/jquery.maskedinput-1.3.min.js"></script>

编辑

这是模型上的字段。我有这样的显示设置

    [DisplayName("Date of Birth")]
    [DisplayFormat(DataFormatString = "0:mm/dd/yyyy", ApplyFormatInEditMode = true)]
    public DateTime? Birthdate  get; set; 

【问题讨论】:

【参考方案1】:

原来是DisplayFormatDataFormatString 的问题。大写月份解决了问题:)

    [DisplayName("Date of Birth")]
    [DisplayFormat(DataFormatString = "0:MM/dd/yyyy", ApplyFormatInEditMode = true)]
    public DateTime? Birthdate  get; set; 

【讨论】:

以上是关于使用 jQuery 掩码时日期未正确显示的主要内容,如果未能解决你的问题,请参考以下文章

引导输入掩码无法工作,控制台中未显示错误

使用 jquery.inputmask 插件进行 parsley.js 验证

使用输入掩码获取日期时间?

在 JFormattedTextField 中删除掩码时遇到问题

使用元掩码时检测 web3 默认帐户的更好模式

jquery Loader Widget 未显示