JavaScript - Проверка даты по формату: различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
(Новая страница: «== Описание == Иногда нужно проверять вводимую пользователем дату в поле ввода веб-формы …»)
 
(категории)
Строка 46: Строка 46:
}
}
</syntaxhighlight>
</syntaxhighlight>
[[Категория:Продлёнка]]
[[Категория:JavaScript]]

Версия от 18:10, 14 июня 2014

Описание

Иногда нужно проверять вводимую пользователем дату в поле ввода веб-формы на соответствие формату.

Проверять нужно следующее:

  • дата соответствует региональному формату, например для России: ДД.ММ.ГГГГ;
  • месяцев должно быть не больше 12;
  • дней должно быть не больше 30/31;
    • для февраля должно быть не больше 28;
      • для високосного февраля можно 29.

Реализация

Проверять будем сразу на клиенте, не отправляя на сервер, потому реализация на JavaScript:

// проверка даты по формату ДД.ММ.ГГГГ
function isDateCorrect(val4check) {
    // сначала по регулярному выражению
    if (!val4check.match(/^\d\d.\d\d.\d\d\d\d$/)) { return false; }
    // год, месяц, день
    year = parseInt(val4check.substr(6, 4), 10);
    month = parseInt(val4check.substr(3, 2), 10);
    day = parseInt(val4check.substr(0, 2), 10);
    
    // 31 день
    if (day > 31) { return false; }
    // 12 месяцев
    if (month > 12) { return false; }
    
    // 30 дней
    if (month == 4
        || month == 6
        || month == 9
        || month == 11)
    { if (day > 30) return false; }

    // февраль
    if (month == 2) {
        if (new Date(year, 1, 29).getMonth() === 1) { if (day > 29) { return false; } }
        else { if (day > 28) { return false; } }
    }

    // это кошерная дата
    return true;
}