Я пытаюсь написать метод, который проверяет, является ли дата действительной.Он передается в трех строках: месяц, день и год по порядку.Месяц должен быть от 0-11 вместо 1-12.Я проверил логику кода в Java, и он работает.is_int - это другой метод, который проверяет, состоит ли строка только из числовых символов.К сожалению, у меня возникают проблемы, с которыми я не могу разобраться.
function is_int(value) {
for (i = 0 ; i < value.length ; i++) {
if ((value.charAt(i) < '0') || (value.charAt(i) > '9')) return false
}
return true;
}
function isValidDate(value1:String, value2:String, value3:String)
{
if (!is_int(value3)) return false;
if (!is_int(value2)) return false;
if (!is_int(value1)) return false;
var v1 = parseInt(value1) + 1;
var v2 = parseInt(value2);
var v3 = parseInt(value3);
if (v1 > 12 || v1 < 1) return false;
if (v2 > 31 || v2 < 1) return false;
if (v2 == 31) if (v1 == 2 || v1 == 4 || v1 == 6 || v1 == 9 || v1 == 11) return false;
if (v1 != 2) return true;
if (v2 < 29) return true;
if (v2 == 30) return false;
if (v3 % 400 == 0)
return true;
else if (v3 % 100 == 0)
return false;
else if (v3 % 4 == 0)
return true;
else
return false;
}
Мой первый тестер запрашивает три ввода текста и, если функция isValidDate возвращает false, отображает предупреждение.Если нет, он переходит на пустую HTML-страницу.Тем не менее, я попробовал это:
function validate() {
if (!isValidDate("a", "a", "a")) {
alert("wrong");
return false;
}
}
, и предупреждение никогда не отображалось, и оно отправлялось каждый раз.Как ни странно, это все же произошло, когда я удалил восклицательный знак перед isValidDate.Я также пытался поменять двойные кавычки на одинарные, но это тоже не решило проблему.То же самое происходит с моим тестером для is_int.Я понятия не имею, где я иду не так.