我想在从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");
}
}
});
我可以在alert(date)
时获取所选日期,但我没有从其他代码中获得任何内容。
请帮忙。
答案 0 :(得分:2)
代码中的错误:
(1)
var dob = Date.parse(date); //return in milliseconds
因此,您无法使用dob.getFullYear()
(2)
Date.today() //Nope. not available
没有可用的方法。
<强>修正:强>
(1)var dob = new Date(date);
无需解析,datepicker返回日期而不是字符串。
(2)var today = new Date(); //returns current dateTime
(3)使用.getFullYear()
从日期中提取年份。
剩余代码:
$(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");
}
}
});
});
工作JSFiddle
答案 1 :(得分:2)
$("#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" />