从 jquery datepicker 选择日期计算年龄(以年为单位)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17921211/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Calculate age in years on date select from jquery datepicker
提问by Pachai
I would like to calculate the age of the user as soon as he selects a date from jquery datepicker.
我想在用户从 jquery datepicker 中选择一个日期后立即计算他的年龄。
$(document).ready(function() {
$( "#nominee_one_dob" ).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
onSelect: function (date) {
var dob = Date.parse(date);
if (dob.addYears(18) < Date.today())
{
alert("Under 18");
}
else
{
alert(" Over 18");
}
}
});
I am able to get the date selected when i alert(date)
but I am not getting anything from the further code.
我能够获得选择的日期,alert(date)
但我没有从进一步的代码中获得任何信息。
Please help.
请帮忙。
回答by Praveen
Bugs in your code:
代码中的错误:
(1)
(1)
var dob = Date.parse(date); //return in milliseconds
therefore you can't extract year using dob.getFullYear()
因此你不能使用提取年份 dob.getFullYear()
(2)
(2)
Date.today() //Nope. not available
no method available.
没有可用的方法。
Fixes:
修复:
(1) var dob = new Date(date);
(1) var dob = new Date(date);
no need to parse, datepicker returns the date not string.
无需解析,datepicker 返回日期而不是字符串。
(2) var today = new Date(); //returns current dateTime
(2) var today = new Date(); //returns current dateTime
(3) use .getFullYear()
to extract year from Date.
(3) 用于.getFullYear()
从日期中提取年份。
Remaining code:
剩余代码:
$(document).ready(function() {
$( "#nominee_one_dob" ).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
onSelect: function (date) {
var dob = new Date(date);
var today = new Date();
if (dob.getFullYear() + 18 < today.getFullYear())
{
alert("Under 18");
}
else
{
alert(" Over 18");
}
}
});
});
Working JSFiddle
工作JSFiddle
回答by Pachai
$("#date_born").datepicker({
onSelect: calculate,
dateFormat: 'dd/mm/yy',
maxDate: '+0d',
yearRange: '1914:2014',
buttonImageOnly: false,
changeMonth: true,
changeYear: true
});
$("#date_Today").datepicker({
onSelect: calculate,
dateFormat: 'dd/mm/yy',
maxDate: '+0d',
yearRange: '1914:2014',
buttonImageOnly: true,
changeMonth: true,
changeYear: true
});
function calculate() {
var start = $('#date_born').datepicker('getDate');
var end = new Date($('#date_Today').datepicker('getDate'));
var age_year = Math.floor((end - start)/31536000000);
var age_month = Math.floor(((end - start)% 31536000000)/2628000000);
var age_day = Math.floor((((end - start)% 31536000000) % 2628000000)/86400000);
$('#age').val(age_year);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Date <input type="text" name="date_born" id="date_born"/>
Date Select<input type="text" name="date_Today" id="date_Today"/>
Age <input type="text" name="age" id="age" />