Проверка даты jQuery MVC 4 .Net 4.5.1 Дата Великобритании должна быть датой Ошибка

У меня есть приложение, которое я недавно обновил до .Net 4.5.1 и MVC 4. Я использую jQuery datepicker и jQuery.validation 1.11.1.

Я нахожусь в Великобритании, поэтому даты будут в локали en-GB («дд / мм / гггг»). Я пробовал то, что предлагается здесь, здесь и здесь, но безрезультатно.

У меня также есть в моем web.config:

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

и установили глобализацию в IIS на en-GB, но каждая вводимая дата проверяется как дата в формате США.

Кто-нибудь может помочь, пожалуйста?


person Declan McNulty    schedule 22.10.2013    source источник
comment
Некоторое время назад у меня была такая же проблема, я не мог найти подходящего решения для этой проблемы, в качестве обходного решения я отключил проверку клиента MVC, написал собственную настраиваемую проверку для required и установил поле даты ввода как readonly, чтобы пользователи не может изменить дату, указанную с помощью datepicker   -  person AthibaN    schedule 22.10.2013
comment
Когда вы примените решение выше, возникнет эта проблема: stackoverflow.com/questions/26279779/   -  person Roman Zajíček    schedule 10.10.2014


Ответы (3)


Изменение метода проверки даты в 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

person Declan McNulty    schedule 22.10.2013
comment
В файле jQuery.validate.js вашего решения - person Declan McNulty; 08.05.2014
comment
И нужно ли мне добавить Globalize.js, потому что я заменил старый date: function ... на этот, но он не сработал. Всегда получаю The filed ... must be Date - person Chlebta; 08.05.2014
comment
Да, я тоже столкнулся с той же проблемой, хотя я сделал, как сказал ... Есть предложения? - person Aniket Bhansali; 16.03.2016
comment
Я также получаю сообщение об ошибке после реализации этого, что он ищет Globalize.js, не уверен, что это такое и где его разместить. - person Jon; 15.04.2016

в вызывающем JQuery просто добавьте формат.

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

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

person chris    schedule 08.05.2014
comment
Не отвечает на вопрос. Они просят подтвердить дату, полученную с помощью датпикера. - person Roger Willcocks; 12.05.2015

Мне просто нужно было понять это, я отменил правило и использовал атрибут данных

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);
}

Предполагается, что у вас есть datepicker, но если вы используете даты и jQuery, я думаю, что это безопасная ставка. Если элемент имеет формат даты, определенный в data-dateformat, он будет анализировать его, используя это, в противном случае он вернется к правилу даты по умолчанию, а если его не было, он реализует правило по умолчанию.

Я поместил это в глобальный файл кода своего сайта, чтобы он не попадал в сценарии jQuery.

person Roger Willcocks    schedule 12.05.2015