计算日期的年龄,从jquery datepicker中选择

时间:2013-07-29 10:06:59

标签: jquery datepicker date-of-birth

我想在从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)时获取所选日期,但我没有从其他代码中获得任何内容。

请帮忙。

2 个答案:

答案 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" />