Как изменить американд в parsley exte.js, чтобы проверять только месяц и год
В Parsley есть метод расширения.js для проверки ошибок на неправильные даты. например: M/D/YY
Я хотел бы изменить это, чтобы проверить только месяц и год. например: ММ / ГГГГ
americandate: function ( val, elem, self) {
if(!/^([01]?[0-9])[\.\/-]([0-3]?[0-9])[\.\/-]([0-9]{4}|[0-9]{2})$/.test(val)) {
return false;
}
var parts = val.split(/[.\/-]+/);
var day = parseInt(parts[1], 10);
var month = parseInt(parts[0], 10);
var year = parseInt(parts[2], 10);
if(year == 0 || month == 0 || month > 12) {
return false;
}
var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
monthLength[1] = 29;
}
return day > 0 && day <= monthLength[month - 1];
}
1 ответ
Решение
Сложность вашей функции предназначена для обеспечения правильного количества дней в месяце.
Для всех дат (в недавней истории) требуется 1-12 в поле месяцев и 2 или 4 цифры в поле лет. Почему бы просто не написать простое регулярное выражение для проверки даты, состоящей из правильных символов.
\b(1[12]|0?[1-9])[.\/-]([0-9]{2}?[0-9]{2})\b