Проверка формата даты 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]
}