товарисчи. помогите плз )
есть поле в которое пользователь вбивает дату
вот как сделать так чтобы жаваскрипт сам обрабатывал это поле и если там ошибка - выдавал предупреждение
и желательно чтобы он строго требовал чтобы дата была в виде дд-мм-гггг
спасибою )
ps
в жаве вапще ваще не шарю )
1. Вездеход - 10 Декабря, 2008 - 09:59:23 - перейти к сообщению
2. Champion - 10 Декабря, 2008 - 10:14:58 - перейти к сообщению
chk_str = 'проверяемая дата'
delim = '.' // символ разделитель. 03.12.08 - разделитель - '.'
day_in_month[1] = 31
day_in_month[2] = 28
day_in_month[3] = 31
...
arr_date = chk_str.split(delim)
if (arr_date[2]от 0 до 99 или имеет длину 4 символа){
это корректный год
если он еще делится на 4 (високосный) day_in_month[2] = 29
}
else return false
if (arr_date[1] от 1 до 12)
...аналогично
if (arr_date[0] == day_in_month[ arr_date[0] ])
хорошо
else плохо
(Добавление)
А еще
if ('Invalid Date' == (date = new Date(chk_str)))
левая дата
delim = '.' // символ разделитель. 03.12.08 - разделитель - '.'
day_in_month[1] = 31
day_in_month[2] = 28
day_in_month[3] = 31
...
arr_date = chk_str.split(delim)
if (arr_date[2]от 0 до 99 или имеет длину 4 символа){
это корректный год
если он еще делится на 4 (високосный) day_in_month[2] = 29
}
else return false
if (arr_date[1] от 1 до 12)
...аналогично
if (arr_date[0] == day_in_month[ arr_date[0] ])
хорошо
else плохо
(Добавление)
А еще
if ('Invalid Date' == (date = new Date(chk_str)))
левая дата
3. Вездеход - 10 Декабря, 2008 - 10:33:10 - перейти к сообщению
а мона это оформить? а то я не знаю как...
4. Champion - 10 Декабря, 2008 - 10:53:09 - перейти к сообщению
<script>
function check_date(chk_str)
{все выше написанное, кроме первой строки
}
function check_date(chk_str)
{все выше написанное, кроме первой строки
}
5. Вездеход - 10 Декабря, 2008 - 12:01:34 - перейти к сообщению
<script>
function check_date(chk_str)
{
chk_str = 'проверяемая дата'
delim = '.'
day_in_month[1] = 31
day_in_month[2] = 28
day_in_month[3] = 31
// сюда напишу количество дней в месяцах
arr_date = chk_str.split(delim)
if ((arr_date[2]>=0 and arr_date[2]<99) or (arr_date[2].lenght==4))
{
//это корректный год
//если он еще делится на 4 (високосный) day_in_month[2] = 29
// как тут писать я не знаю =(
}
else return false
if (arr_date[1] от 1 до 12)
//...аналогично
if (arr_date[0] == day_in_month[ arr_date[0] ])
///хорошо - а как это сделать? )
else {
// тоже самое =(
//плохо
}
</script>
у меня возникли вопросы касательно обработки - как это лучше сделать? как вывести сообщение об ошибке и т.д.
function check_date(chk_str)
{
chk_str = 'проверяемая дата'
delim = '.'
day_in_month[1] = 31
day_in_month[2] = 28
day_in_month[3] = 31
// сюда напишу количество дней в месяцах
arr_date = chk_str.split(delim)
if ((arr_date[2]>=0 and arr_date[2]<99) or (arr_date[2].lenght==4))
{
//это корректный год
//если он еще делится на 4 (високосный) day_in_month[2] = 29
// как тут писать я не знаю =(
}
else return false
if (arr_date[1] от 1 до 12)
//...аналогично
if (arr_date[0] == day_in_month[ arr_date[0] ])
///хорошо - а как это сделать? )
else {
// тоже самое =(
//плохо
}
</script>
у меня возникли вопросы касательно обработки - как это лучше сделать? как вывести сообщение об ошибке и т.д.
6. Champion - 10 Декабря, 2008 - 12:14:41 - перейти к сообщению
<script>
function check_date(chk_str)
{
этой строки нету здесь
delim = '.'
var day_in_month[1] = 31
var day_in_month[2] = 28
var day_in_month[3] = 31
// сюда напишу количество дней в месяцах
arr_date = chk_str.split(delim)
arr_date[1] = parseInt(arr_date[1])
arr_date[0] = parseInt(arr_date[0])
arr_date[2] = parseInt(arr_date[2])
if ((arr_date[2]>=0 and arr_date[2]<99) &&/*and*/ (arr_date[2].lenght==4))
{
//это корректный год
//если он еще делится на 4 (високосный) day_in_month[2] = 29
// как тут писать я не знаю =(
if ((arr_date[2] % 4) == 0) day_in_month[2] = 29
}
else return false
if (arr_date[1] от 1 до 12)
//...аналогично теперь у нас уже корректный и год, и месяц
if (arr_date[0] == day_in_month[ arr_date[0] ])
///хорошо - а как это сделать? )
return rtue
else {
return false
// тоже самое =(
//плохо
}
</script>
<input name=in_date><input type=button onclick = 'javascript:{if (check_date(document.in_date.value)) alert(document.in_date.value+"криво " ) ; esle alert(document.in_date.value+"некорректная дада " ) } '>
function check_date(chk_str)
{
этой строки нету здесь
delim = '.'
var day_in_month[1] = 31
var day_in_month[2] = 28
var day_in_month[3] = 31
// сюда напишу количество дней в месяцах
arr_date = chk_str.split(delim)
arr_date[1] = parseInt(arr_date[1])
arr_date[0] = parseInt(arr_date[0])
arr_date[2] = parseInt(arr_date[2])
if ((arr_date[2]>=0 and arr_date[2]<99) &&/*and*/ (arr_date[2].lenght==4))
{
//это корректный год
//если он еще делится на 4 (високосный) day_in_month[2] = 29
// как тут писать я не знаю =(
if ((arr_date[2] % 4) == 0) day_in_month[2] = 29
}
else return false
if (arr_date[1] от 1 до 12)
//...аналогично теперь у нас уже корректный и год, и месяц
if (arr_date[0] == day_in_month[ arr_date[0] ])
///хорошо - а как это сделать? )
return rtue
else {
return false
// тоже самое =(
//плохо
}
</script>
<input name=in_date><input type=button onclick = 'javascript:{if (check_date(document.in_date.value)) alert(document.in_date.value+"криво " ) ; esle alert(document.in_date.value+"некорректная дада " ) } '>
7. Вездеход - 10 Декабря, 2008 - 14:17:12 - перейти к сообщению
после обработки вот такой вот код у меня получился
CODE (text):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <script LANGUAGE="javascript">
- function check_date(chk_str)
- {
- delim = '.';
- var day_in_month = new Array('', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30');
- arr_date = chk_str.split(delim);
- arr_date[1] = parseInt(arr_date[1]);
- arr_date[0] = parseInt(arr_date[0]);
- arr_date[2] = parseInt(arr_date[2]);
- if ((arr_date[2]>0 && arr_date[2]<99) && (arr_date[2].lenght==4))
- {
- if ((arr_date[2] % 4) == 0) { day_in_month[2] = 29; }
- return true;
- } else { return false; }
- if (arr_date[1]>0 && arr_date[1]<12) { return true; } else { return false; }
- if (arr_date[0] == day_in_month[arr_date[0]]) { return true; } else { return false; }
- }
- </script>
- <form name="my_form">
- <input name="in_date" type="text">
- <input type="button" onclick="javascript:{if (check_date(document.in_date.value)) alert(document.in_date.value2+'криво') ; else alert(document.in_date3.value+'некорректная дата') } " value="go">
- </form>
файрфокс вот так ругается:
Ошибка: document.in_date has no properties
Источник: http://localhost/
Строка: 1
в чем проблема я уже не понимаю - все что мог исправил....