валидность даты
Помогите, плиз!
юзер вводит в поле дату в формате 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, время: 06:56. |