Валидация даты на JavaScript

Для ввода дат на сайтах я обычно использую замечательный плагин Jquery Datepicker, выставляя текстовому полю, к которому он привязан, режим readonly. Таким образом, я точно знаю, в каком формате введенная дата придет на сервер, и как ее там обработать (но не забываю о проверке введенных данных на стороне сервера!). Однако, недавно возникла задача разрешить ручной ввод даты в текстовом поле в формате дд.мм.гггг. Конечно, можно разрешить писать в текстовое поле все, что угодно и проверять валидность введенных данных на сервере. Однако, на мой взгляд, было бы удобней проверить данные сразу на стороне клиента, и если данные введены неверно — принять нужные меры.
Итак, вот как будет работать наша система: при клике на поле для ввода даты будет отображаться стандартный Jquery Datepicker. Если же пользователь хочет ввести дату вручную, он может написать ее прямо в этом текстовом поле. Для облегчения этого добавим к полю маску ввода Jquery Masked Input. Если введенная дата валидна, включаем кнопку сабмита и подсвечиваем поле зеленым. Если дата не валидна — подсвечиваем поле красным и отключаем кнопку сабмита.
Проверить валидность даты можно при помощи Jquery Validate, но я решил написать для этого свой велосипед на нативном JS, так что представленная ниже функция валидации может быть использована без каких-либо JS фреймворков (или в связке с любым из них :)).
Собственно, вот исходник моей функции:

function ValidateDate(date_fl){
str=date_fl.value;
function TstDate(){
str2=str.split(".");
if(str2.length!=3){return false;}
//Границы разрешенного периода. Нельзя ввести дату до 1990-го года и позднее 2020-го.
if((parseInt(str2[2], 10)< =1990)||(parseInt(str2[2], 10)>=2020)) {return false;}
str2=str2[2] +'-'+ str2[1]+'-'+ str2[0];
if(new Date(str2)=='Invalid Date'){return false;}
return str;
}
var S=TstDate()
if(S)
{
//Дата валидна
date_fl.className='date_ok';
document.getElementById("submit").disabled = false;
}
else
{
//Дата не валидна
date_fl.className='date_err';
document.getElementById("submit").disabled = true;
}
}

Немного поясню принцип ее работы: функция принимает на вход объект, в который производится ввод даты. Затем введенное значение разбивается на массив по точке в качестве разделителя и приводится в формат гггг-мм-дд, после чего происходит попытка создания на его основе объекта типа Date. Таким образом проверяется не просто соответствие записи форме xx.xx.xxxx, а именно возможность существования такой даты (31-е февраля не прокатит). Если все отлично — присваиваем полю ввода CSS-класс ‘date_ok’ и включаем кнопку сабмита. Если произошла ошибка — присваиваем класс ‘date_err’ и отключаем кнопку. Конечно, ничто не мешает вам произвести какие-то свои действия.
Ну и в конце архив с примером использования.

33 комментария

  1. When organizing Inner parts renovators New york city or General development New york city, experienced professionals and effective property materials are chosen.

    But we are actually being actually contacted certainly not just for these reasons. With each customer of the business we construct one of the most having faith in partnerships, thanks to the observing attributes:

    Preparatory budgeting as well as mistake of the cost of repairing an house;
    Delivering regular records on the improvement of repair work;
    Inner parts renovations, General building and construction— solutions that are delivered by numerous companies in New york. Yet our firm continues to be the marketplace forerunner for several years. On our account, a massive lot of examples of collaboration with both people and corporations. General contractor nyc;
    Covering the amount of desired costs of building products;

    The manufacture of ornamental components and also furniture for an personal concept that can easily transform any space.

  2. Подскажите пожалуйста, где скачать взломанную версию игры Hero Wars: BEGINS для андроид?
    Вот на этом сайте она есть, но версия игры уже устарела, а я ищу последнюю версию с модом.

  3. Стоящий материал [url]http://www.ogirk.ru/node/74618[/url] про юристов Иркутска и их работу

  4. Hi :). I am from Netherlands and i don’t know how can i disable my signature? Regards 🙂

  5. Спамные бэклинки.
    Устрание сайтов конкурентов по любым ключевым запросам.
    Делаем 300000-400000 спамных беклинков.
    Устранение позиции сайта в поисковике по комерческим ключевым словам.
    Секретная методика. Опыт более 10 лет.
    Гарантия возврата денег через 3 месяца.
    Цена 50$
    Полная отчётность.
    Оплата: Bitcoin, Visa, MasterCard…Qiwi, Yandex.Money
    Telgrm: @exrumer
    Whatssap: +7 906 531-21-55
    Viber: +7 977 525-54-62
    Skype: XRumer.pro

    Backlinks sраm.
    Ustraniye of the websites of competitors according to keywords in the searcher.
    We do 300000-400000 sраm backlinks.
    Elimination of a position of the website in the searcher according to commercial keywords.
    Confidential technique. Experience more than 10 years.
    Refund guarantee in 3 months.
    The price is $50.
    Reports!
    I speak English!
    Payment: Bitcoin, Visa, MasterCard… Qiwi, Yandex.Money
    Telgrm: @exrumer
    Whatssap:+7 906 531-21-55
    Viber: +7 977 525-54-62
    Skype: XRumer.pro

  6. Наша фирменная услуга грузоперевозки была основана в целях комфорта клиентов. У нашей знаменитой международной компании ИП КОНСТАНТИН Анжеро-Судженск имеется личный автомобильный парк а также штат курьеров. Наша производственная компания готова совершить доставку товара для вашего предприятия в благоприятное время. Для этого только лишь выберите сию услугу. В том случае ваш товар будет доставлен очень точно и быстро. Можно рассчитывать на своевременное сопровождение, персональные решения и отменное качество широкоформатной печати.
    упаковочные пакеты с клеевым клапаном

    Предприятие ОАО Посохов Люберцы стремится предоставить вам, роскошный сервис. Наш внушительных размеров запас товаров( пакетах майка) на нашем складе, быстрое приём заявок, великолепное обслуга заказчиков и наиболее доступные цены позволяет закупить пакетах с замком (зип-лок пакеты) всем. Специализированное предприятие производит, импортирует и реализует любые виды упаковки(вакуумных пакетов ).

  7. Наша фирменная сервисная служба перевозки была основана в целях удобства потребителей. У нашей знаменитой корпорации ОДО Новичков Клинцы существует свой автомобильный парк и штат рассыльных. Наша специализированная международная компания готова сделать доставку выпускаемой продукции вам в подходящее время. Для всего этого просто-напросто сделаете заказ эту услугу. При таких обстоятельствах ваш продукт будет доставлен очень быстро и точно. Можно без проблем рассчитывать на отличное качество печати, персональное решение и своевременное сопровождение.
    прозрачные пакеты с клеевым клапаном купить

    Более 8 лет организацииИП АДИЛЯ Норильск приходить на выручку предприятиям в разных секторах экономики индустрии находить идеальные решения для пакетирования своих изделий. Организация ценит эксплуатационные нововведения, ориентацию на потребителя и желание к стабильному усовершенствованию. Обширный ассортиментный выбор продукции (пакеты из воздушно-пузырчатой пленки ), позволят удовлетворить запросы самых строгих покупателей. Доставка товаров может производится в разный регион нашей страны.

  8. Онлайн-магазин electrotorg.ru предлагает надежный силовой кабель, провод и многое другое по приятным ценам. Доставим заказ в любую точку России. Розничные шоу-румы в Москве и Самаре. Будем рады видеть вас!

  9. Амблиопия. Причины, ведущие к расстройству зрения.
    Подробнее в этой замечательной статье.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *