0

我想在用户从 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)但我没有从进一步的代码中得到任何东西。

请帮忙。

4

2 回答 2

3

代码中的错误:

(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()从 Date 中提取年份。

剩余代码:

$(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

于 2013-07-29T10:29:29.670 回答
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" />

于 2016-07-20T06:38:47.457 回答