Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2012, 11:12
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

валидность даты
Помогите, плиз!
юзер вводит в поле дату в формате dd/mm/yyyy
Дата вводится по маске (спасибо jquery), так что проверять правильность вводимого формата не надо. Но надо проверить, а дату ли он ввел. То есть число 87/45/3445 - не дата. А 01/12/1899 - дата.
И если не дата, надо пополнить массив ошибок err.push("не корректная дата")
На php такую проверку сделать - раз плюнуть: checkdate(). А вот в jscript опыта у меня мало. Не знаю, как сделать. А хочется именно на стороне клиента максимум ошибок выявить, чтобы не перегружать форму лишний раз.

Последний раз редактировалось зверек, 20.06.2012 в 11:16.
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2012, 11:50
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

var d = '87/45/3445';
if (new Date(d) == 'Invalid Date')
   alert('Ne pravilino');
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 20.06.2012, 12:05
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

не работает. Даже приведенный пример не работает
Ответить с цитированием
  #4 (permalink)  
Старый 20.06.2012, 12:31
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<input id="Date" type="text" value="11/12/1999" onchange="onchangeTest()">

<script type="text/javascript">
function onchangeTest(){
str=document.getElementById('Date').value;
 var err=["не корректная дата"]
 function TstDate(){
   str2=str.split("/");
   if(str2.length!=3){return false;}
   str2=str2[2] +'-'+ str2[1]+'-'+ str2[0];
   if(new Date(str2)=='Invalid Date'){return false;}
   return str;
 }

 var S=TstDate()
 if(S){err.splice(0,1);
   alert(str);
 } else alert(err);

}
</script>

Последний раз редактировалось Deff, 20.06.2012 в 12:48.
Ответить с цитированием
  #5 (permalink)  
Старый 20.06.2012, 12:47
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

Да, это работает. Сама уже после первого примера прочитала, что дата в new Date() в определенном формате должна входить.

Спасибо большое walik и Deff ! Помогли.
Ответить с цитированием
  #6 (permalink)  
Старый 19.10.2016, 14:12
Новичок на форуме
Отправить личное сообщение для Luchik Посмотреть профиль Найти все сообщения от Luchik
 
Регистрация: 19.10.2016
Сообщений: 1

Такая проверка не отбрасывает даты типа "30 февраля", new Date() делает их 1 марта и пишет что всё ок.
Ответить с цитированием
  #7 (permalink)  
Старый 19.10.2016, 22:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Luchik, верно.
Под данный конкретный случай и чтоб наверняка надо как-то так:

<input id="Date" type="text" value="11/12/1999" onchange="alert( isValidDate(this.value) )">
<script type="text/javascript">
function isValidDate(str){
  var input = str.match(/\d+/g),
      date = new Date(input[2], input[1] - 1, input[0]);

  return date.getFullYear() == input[2] &&
         date.getDate()     == input[0] &&
         date.getMonth()    == input[1] - 1;
}
</script>
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Календарь,формат даты день-месяц-год изменить на год-месяц-день tusha-kutusha Элементы интерфейса 0 07.05.2012 17:03
regexp формат даты eca Общие вопросы Javascript 10 23.01.2012 12:59
проблема с сортировкой даты rave82 jQuery 3 27.09.2011 01:35
jQuery DatePicker: формат даты при передаче в get запросе viko_rus jQuery 0 16.02.2011 13:33
Подсчет дней в IE, даты пользователя gotravelman Internet Explorer 6 26.02.2009 16:25