#javascript
#javascript
Вопрос:
У меня есть 2 ввода, один вводится для «Даты рождения», а другой — для возраста, в любом случае, если я изменю дату рождения, ввод возраста автоматически изменится.
<input type="text" name="birthdate" value="07/24/1988" />
<input type="text" name="age" value="32" />
Ответ №1:
Вы можете вычислить разницу текущей даты и введенной даты в годах, а затем изменить значение возраста для keyup
события, как показано ниже
function age(dt) {
var diff = ((new Date().getTime() - new Date(dt).getTime()) / 1000) / (60 * 60 * 24);
document.getElementById("age").value = Math.abs(Math.round(diff / 365.25));
}
<input type="text" name="birthdate" value="07/24/1988" onkeyup="age(this.value)" />
<input type="text" name="age" value="32" id="age" />
Комментарии:
1. Вы можете предположить , что OP может принять ответ на свой вопрос, но это противоречит рекомендациям SO, чтобы конкретно попросить их принять ваш ответ. (это их выбор, и им не обязательно принимать какой-либо ответ).
2. @FluffyKitten Ты должен это проверить — meta.stackexchange.com/questions/88535/… .Вежливая просьба о принятии действительно приемлема :). Спасибо
3. Приятно! Однако: вы можете вычислить
diff
в одной строке или, по крайней мере, переместить ` / 1000′ во вторую строку. Слишком много пустых строк (я бы не использовал ни одной). Все это может быть одной строкой, и даже без функции: непосредственно вonkeyup
. Високосные годы, похоже, игнорируются в вашем решении.4. Черт возьми, это руководство для нового пользователя. OP работает на SO уже более 7 лет. Я видел, как это поднималось несколько раз на обоих meta. SE и meta. Таким образом, на протяжении многих лет, и общий консенсус заключается в том, что можно направлять новых пользователей, которые ранее не принимали ответ (здесь, в OP), после того, как прошло достаточно времени , чтобы они могли получить ответы (не только ваши) и, что еще более важно, что срок для принятия прошел (чего в данном случае не было).
5. Рискуя быть назойливым:
<input type="text" name="birthdate" value="07/24/1988" onkeyup="document.getElementById('age').value = Math.round( ( new Date().getTime() - new Date(this.value).getTime() ) / (1000 * 60 * 60 * 24 * ( (400 * 365 97) / 400) ) );">