У меня есть HTML-форма с элементом «Дата» и кнопка отправки. Есть 2 функции. Один из них - для расчета возраста с даты рождения в элементе HTML «date». Другая функция заключается в сравнении возраста с минимально допустимым возрастом. Мне нужна помощь для его завершения. См. Мои вопросы в комментариях в коде. Да, я видел другие подобные вопросы. Я хотел бы узнать, а не просто скопировать/вставить. Если я понимаю, что не так с моим кодом/синтаксисом, то я узнаю лучше. Заранее спасибо.Вычислить возраст от элемента «Дата» HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
var minAge = 18;
var curDate = new Date();
var curr_year = curDate.getFullYear();
var curr_month = curDate.getMonth();
//Calculates age from given Birth Date in the form//
function _calcAge() {
var dt1 = document.getElementById('date').value;
var birth_date = new Date(dt1);
var birth_year = birth_date.getFullYear();
var birth_month = birth_date.getMonth();
var calc_year = curr_year - birth_year;
var calc_month = curr_month - birth_month;
//The following below is what I am not sure about.
//I need to combine years and months and
//convert them into a string??? Is this syntax dead wrong?
var final_result = (calc_year && "." && calc_month).toString();
// final result should be a number with a decimal point, example: 35.5
final_result = parseFloat;
return (final_result);
alert(final_result);
}
//Compares calculated age with minimum age and acts according to rules//
function _setAge() {
var age = _calcAge();
//alert("my age is " + age);
if (age < minAge) {
alert("You are not allowed into the site. The minimum age is 18!");
} else
alert("Welcome to my Site");
window.open(main.htm, _self);
}
</script>
<form>
Date Of Birth: <input type="date" name="date of birth" id="date" />
<input type="submit" name="submit" id="submit" onClick="_setAge();" />
</form>
</body>
</html>
Спасибо, но ... Если мы сделаем это по-своему (и это выглядит хорошо), как мы учитываем годы, которые имеют 366 дней? Не могу ли я каким-либо образом использовать встроенную функциональность элемента «date» для учета всего этого? –
Вычитание автоматически вычитает 366 дней, если есть годы с 366. С округлением до 1 десятичной точки вы покрываете 0,1 * 365, а 36,5 дней допуск так, как +/- 18 дней ... вероятность того, что там не будет у вас есть возраст выше 4 * 18 дней, пока один десятичный знак может быть ошибочным на 1, я думаю. Могу не накрывать действительно каждый случай, но достаточно точный, я думаю. Если результат правильный или неправильный, зависит от того, как вы определяете год. Если год, который вы вычисляете, определяется с 365 днями, как это. – Igle