валидность даты
Помогите, плиз!
юзер вводит в поле дату в формате dd/mm/yyyy Дата вводится по маске (спасибо jquery), так что проверять правильность вводимого формата не надо. Но надо проверить, а дату ли он ввел. То есть число 87/45/3445 - не дата. А 01/12/1899 - дата. И если не дата, надо пополнить массив ошибок err.push("не корректная дата") На php такую проверку сделать - раз плюнуть: checkdate(). А вот в jscript опыта у меня мало. Не знаю, как сделать. А хочется именно на стороне клиента максимум ошибок выявить, чтобы не перегружать форму лишний раз. |
var d = '87/45/3445';
if (new Date(d) == 'Invalid Date')
alert('Ne pravilino');
|
не работает. Даже приведенный пример не работает :(
|
<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>
|
Да, это работает. Сама уже после первого примера прочитала, что дата в new Date() в определенном формате должна входить.
Спасибо большое walik и Deff ! Помогли. |
Такая проверка не отбрасывает даты типа "30 февраля", new Date() делает их 1 марта и пишет что всё ок.
|
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>
|
| Часовой пояс GMT +3, время: 12:38. |