6

我有一个最近升级到 .Net 4.5.1 和 MVC 4 的应用程序。我正在使用 jQuery datepicker 和 jQuery.validation 1.11.1。

我在英国,因此日期将采用 en-GB 语言环境(“dd/mm/yyyy”)。我已经尝试过 这里这里这里的建议,但无济于事。

我的 web.config 中也有:

<globalization uiCulture="en-GB" culture="en-GB" />

并将 IIS 中的全球化设置为 en-GB,但输入的每个日期都被验证为美国格式日期。

有人可以帮忙吗?

4

3 回答 3

8

将 jQuery.validate.js 中的日期验证方法更改为以下解决了该问题:

date: function (value, element) {
        $.culture = Globalize.culture("en-GB");
        var date = Globalize.parseDate(value, "dd/MM/yyyy", "en-GB");
        return this.optional(element) || 
                       !/Invalid|NaN/.test(new Date(date).toString());
    }

在 Chrome、FF 和 IE 中测试

于 2013-10-22T13:46:51.697 回答
0

在调用的 Jquery 中只需添加格式。

$(function() { $("#datepicker").datepicker({dateFormat: 'dd/mm/yy'}); });

http://www.matthewcarlin.co.uk/jquery-quick-tip-2-changeing-date-format

于 2014-05-08T13:17:52.180 回答
0

刚刚弄清楚这一点,我覆盖了规则并使用了数据属性

if (typeof jQuery.validator.methods.date !== 'function') {
    var f = function (value, element) {
        var e = $(element).attr('data-dateformat');
        if (e && (e.length)) {
            var dt = jQuery.datepicker.parseDate(e, value);
            return this.optional(element) || !/Invalid|NaN/.test(dt.toString());
        } else {
            return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
        }
    }
    jQuery.validator.addMethod("date", f);
} else {
    var m = jQuery.validator.methods.date;
    var f = function(value, element) {
        var e = $(element).attr('data-dateformat');
        if (e && (e.length)) {
            var dt = jQuery.datepicker.parseDate(e, value);
            return this.optional(element) || !/Invalid|NaN/.test(dt.toString());
        } else {
            return m(value, element);
        }
    }
    jQuery.validator.addMethod("date", f);
}

它假设您有日期选择器,但如果您使用日期和 jQuery,我认为这是一个安全的选择。如果元素具有在 data-dateformat 中定义的日期格式,它将使用该格式对其进行解析,否则它将回退到默认日期规则,如果不存在,则执行默认规则。

我将它放在我的站点全局代码文件中,以将其保留在 jQuery 脚本之外

于 2015-05-12T04:05:14.160 回答