Проверка формата даты Jquery dd/MM/yyyy

I использование по умолчанию ASP.NET пакет проверки MVC 4 в моем приложении. Ввиду этого у меня есть поле даты в формате "dd/MM / yyyy" и проверка jQuery не удалось проверить формат. Затем я добавил ниже код, чтобы переопределить поведение по умолчанию.

$(function () {
        $.validator.methods.date = function (value, element) {
            Globalize.culture("en-GB");
            // you can alternatively pass the culture to parseDate instead of
            // setting the culture above, like so:
           // parseDate(value, null, "en-AU")
            return this.optional(element) || Globalize.parseDate(value) !== null;
        }
    });

затем проблема проверки даты была решена, и теперь мое приложение не запускает проверку на стороне клиента, а проверку на стороне сервера. в чем может быть причина такого поведения?

6 ответов


нашел более простое решение для меня на see : проверка на стороне клиента не выполняется для формата даты dd/mm / yyyy в jQuery Validate

нравится, потому что мне не нужны новые сторонние скрипты или дополнительные плагины

в основном перепишите метод проверки следующим образом:

$(document).ready(function () {
    $.validator.methods.date = function(value, element) {
        return this.optional(element) || parseDate(value, "dd-MM-yyyy") !== null;
    };
});

вы можете использовать dateITA из дополнительных методов.

http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/additional-methods.js

$("#myform").validate({
    rules: {
        dateITA: true
    }
})

надеюсь, это сработает.


ему не хватало глобализации.файл js. я изменил код, как показано ниже, и теперь работает нормально.

загрузите файлы из https://github.com/jquery/globalize

включить ссылки на соответствующие .JS-файлы (вы также можете установить его с помощью пакетов NuGet, которые я использовал.)

<script src="~/Scripts/globalize/globalize.js"></script>
<script src="~/Scripts/globalize/cultures/globalize.culture.en-GB.js"></script>

$(document).ready(function () {
        $.culture = Globalize.culture("en-GB");
        $.validator.methods.date = function (value, element) {
            //This is not ideal but Chrome passes dates through in ISO1901 format regardless of locale 
            //and despite displaying in the specified format.

            return this.optional(element)
                || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB")
                || Globalize.parseDate(value, "yyyy-mm-dd");
        }
    });

Спасибо Dai. Пришлось использовать что-то похожее с даты.библиотека js. См. ниже:

$.validator.methods.date = function(value, element) { 
  return this.optional(element) || Date.parseExact(value, "dd-MM-yyyy"); 
};

для проверки можно использовать следующий код:

    jQuery.validator.addMethod("validdate", function(value, element) {
       return this.optional(element) ||  /^\d{1,2}\/\d{1,2}\/\d{4}$/.test(value);
    }, "Please enter valid date.");

любезно используйте $ или jQuery в соответствии с вашим кодом. Здесь вам просто нужно добавить правило в код jQuery и разрешить использовать validdate для вашего правила костюма.


Я предпочитаю форматировать в MM/dd / yyyy и использовать ту же проверку jQuery. Это отлично работает, если вы перезаписываете проверку даты jQuery.

$.validator.methods.date = function (value, element) {
    value = dateValue(value);
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());;
}

function dateValue(value) {
    var date = value.split("/");
    return date[2] + "/" + date[1] + "/" + date[0]
}