我有一个计算年龄的代码但似乎错了,因为我觉得1950年的基础。
现在我想计算当前时间中的年龄和datepicker上的选定日期。示例:现在日期 11/24/14 如果我选择了datepicker 11/24/13 ,则输出 1 。请帮助我。
HTML
<div class="checked" id="age"></div>
<input id="dob" />
JQUERY
$('#dob').datepicker({
onSelect: function(value, ui) {
console.log(ui.selectedYear)
var today = new Date(),
dob = new Date(value),
age = ui.selectedYear - 1950;
$('#age').text(age);
},
maxDate: '+0d',
changeMonth: true,
changeYear: true,
defaultDate: '-18yr',
});
答案 0 :(得分:1)
要计算年龄,您需要使用getFullYear()
获取当前年份:
age = today.getFullYear() - ui.selectedYear;
<强> 段 强>:
$('#dob').datepicker({
onSelect: function(value, ui) {
var today = new Date(),
age = today.getFullYear() - ui.selectedYear;
$('#age').text(age);
},
maxDate: '+0d',
changeMonth: true,
changeYear: true,
defaultDate: '-18yr',
});
&#13;
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<input id="dob" />
<div class="checked" id="age"></div>
&#13;
答案 1 :(得分:0)
您需要从所选日期中减去当前年份。
$('#dob').datepicker({
onSelect: function(value, ui) {
var today = new Date().getTime(),
dob = new Date(value).getTime();
age = today - dob;
yoa = Math.floor(age / 1000 / 60 / 60 / 24 / 365.25); // age / ms / sec / min / hour / days in a year
if(yoa < 18){
under18();
}else{
overOrEqual18();
}
},
maxDate: '+0d',
changeMonth: true,
changeYear: true,
defaultDate: '-18yr',
});
function overOrEqual18(){
$('#age').text('you are old enough');
}
function under18(){
$('#age').text('you are NOT old enough');
}
我建议您将所选日期转换为时间戳,以便您可以更准确地计算他们的年龄,而不是仅仅使用他们选择的年份(这意味着它可以适应日期/月份和年份)
我添加了一些功能,可让您根据输入是否超过18岁来执行操作。
<强> DEMO 强>
编辑:
根据你对另一个答案的评论。如果您将maxDate: '+0d'
更改为maxDate: '-18yr'
,则会禁用今天之前不到18年的日期选择
<强> DEMO 强>
答案 2 :(得分:0)
function comp(){
var bday=document.getElementById('bday').value;
var today = new Date();
var birthDate = new Date(bday);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (today.getMonth() < birthDate.getMonth() || (today.getMonth() == birthDate.getMonth() && today.getDate() < birthDate.getDate())) {
age--;
}
document.getElementById('age').value=age;
}