【问题标题】:How to use jquery globalize with jquery validate unobtrusive in mvc 5如何在 mvc 5 中使用 jquery globalize 和 jquery validate unobtrusive
【发布时间】:2016-12-10 21:13:04
【问题描述】:

我使用 mvc 5,但 jquery validate unobtrusive 将日期验证为 MM/dd/yyyy,当我搜索如何使其验证 dd/MM/yyyy 时

我发现 jquery globalize 可以实现这一点,但我没有找到当前版本 Globalize v1.1.2 的任何示例

我找到的所有示例都是针对低于 1.x 的版本

景色

<div class="form-group">
    @Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.Date, "dd/MM/yyyy", new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })
    </div>
</div>

元数据指定日期为 dd/MM/yyyy

    [Required(ErrorMessage = " الحقل مطلوب ")]
    [DisplayName("تاريخ ")]
    [DisplayFormat(DataFormatString = "{dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime Date { get; set; }

尽管 jquery validate unobtrusive 将日期验证为 MM/dd/yyyy

【问题讨论】:

  • 你需要包含代码,而不是它的图像
  • 已编辑的问题

标签: asp.net-mvc date jquery-validate globalization unobtrusive-validation


【解决方案1】:

我之前遇到过这个问题,你需要重载jquery不显眼的验证日期验证方法(as answered here),让它知道输入的值是一个日期。通过这样做,您将不需要使用 jquery globalize。

代码

jQuery(function ($) {
    $.validator.addMethod('date',
    function (value, element) {
        if (this.optional(element)) {
            return true;
        }

        var ok = true;
        try {
            $.datepicker.parseDate('dd/mm/yy', value);
        }
        catch (err) {
            ok = false;
        }
        return ok;
    });

否则,如果您将应用程序设置为使用本地文化,则可以使用 this

 jQuery(function ($) {
        $.validator.addMethod('date', function (value, element) {
        var d = new Date();
        return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
        });
     });

【讨论】:

  • 非常好,特别是如果您不想添加几个脚本文件只是为了实现这一点。谢谢你:)
猜你喜欢
  • 2016-06-22
  • 1970-01-01
  • 2017-01-08
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2015-09-22
相关资源
最近更新 更多