JQuery Age calculation on date

前端 未结 7 1295
挽巷
挽巷 2020-12-15 06:34

Am I missing something in the following jQuery code?

var dob = $(\'#date\').val();
if(dob != \'\'){
    var today = new Date();
    var dayDiff = Math.ceil(t         


        
相关标签:
7条回答
  • 2020-12-15 07:12

    Firstly the id mentioned in the textbox should not contain '#'

    I have also Created a fiddle

    Oops i had't checked the date it was posted on

    0 讨论(0)
  • 2020-12-15 07:16

    That's what worked for me while all the rest gave NaN:

    That only works if the dob format is mm/dd/yy

    function getAge(dob) { return ~~((new Date()-new Date(dob))/(31556952000)) }
    $("#dob").val()
    $(dob).change(function(){
      $('.age').val(getAge($(this).val()));
    });
    

    Please see my jsfiddle http://jsfiddle.net/A888/98c21nbz/1/

    0 讨论(0)
  • 2020-12-15 07:28

    $('#date').val() returns the string '1988-04-07'. You need to parse it into an actual number.

    dob = new Date(dob);
    var today = new Date();
    var age = Math.floor((today-dob) / (365.25 * 24 * 60 * 60 * 1000));
    $('#age').html(age+' years old');
    

    As @esqew points out, you also need to change id="#date" to id="date".

    0 讨论(0)
  • 2020-12-15 07:34
    $("#dob").change(function(){
    
        var today = new Date();
        var birthDate = new Date($('#dob').val());
        var age = today.getFullYear() - birthDate.getFullYear();
        var m = today.getMonth() - birthDate.getMonth();
        if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
            age--;
        }
       return $('#age').html(age+' years old');
    });
    

    It worked for me

    0 讨论(0)
  • 2020-12-15 07:35
    function getAge(dateString) {
      var now = new Date();
      var today = new Date(now.getYear(),now.getMonth(),now.getDate());
    
      var yearNow = now.getYear();
      var monthNow = now.getMonth();
      var dateNow = now.getDate();
     //date must be mm/dd/yyyy
      var dob = new Date(dateString.substring(6,10),
                         dateString.substring(0,2)-1,                   
                         dateString.substring(3,5)                  
                         );
    
      var yearDob = dob.getFullYear();
      var monthDob = dob.getMonth();
      var dateDob = dob.getDate();
      var age = {};
      var ageString = "";
      var yearString = "";
      var monthString = "";
      var dayString = "";
    
    
      yearAge = yearNow - yearDob;
    
      if (monthNow >= monthDob)
        var monthAge = monthNow - monthDob;
      else {
        yearAge--;
        var monthAge = 12 + monthNow -monthDob;
      }
    
      if (dateNow >= dateDob)
        var dateAge = dateNow - dateDob;
      else {
        monthAge--;
        var dateAge = 31 + dateNow - dateDob;
    
        if (monthAge < 0) {
          monthAge = 11;
          yearAge--;
        }
      }
    
      age = {
          years: yearAge,
          months: monthAge,
          days: dateAge
          };
    
      if ( age.years > 1 ) yearString = " years";
      else yearString = " year";
      if ( age.months> 1 ) monthString = " months";
      else monthString = " month";
      if ( age.days > 1 ) dayString = " days";
      else dayString = " day";
    
    
      if ( (age.years > 0) && (age.months > 0) && (age.days > 0) )
        ageString = age.years + yearString + ", " + age.months + monthString + ", and " + age.days + dayString + " old.";
      else if ( (age.years == 0) && (age.months == 0) && (age.days > 0) )
        ageString = "Only " + age.days + dayString + " old!";
      else if ( (age.years > 0) && (age.months == 0) && (age.days == 0) )
        ageString = age.years + yearString + " old. Happy Birthday!!";
      else if ( (age.years > 0) && (age.months > 0) && (age.days == 0) )
        ageString = age.years + yearString + " and " + age.months + monthString + " old.";
      else if ( (age.years == 0) && (age.months > 0) && (age.days > 0) )
        ageString = age.months + monthString + " and " + age.days + dayString + " old.";
      else if ( (age.years > 0) && (age.months == 0) && (age.days > 0) )
        ageString = age.years + yearString + " and " + age.days + dayString + " old.";
      else if ( (age.years == 0) && (age.months > 0) && (age.days == 0) )
        ageString = age.months + monthString + " old.";
      else ageString = "Oops! Could not calculate age!";
    
      return ageString;
    }
    
    // A bit of jQuery to call the getAge() function and update the page...
    $(document).ready(function() {
      $("#submitDate").click(function(e) {
        e.preventDefault();
    
        $("#age").html(getAge($("input#date").val()));
    
      });
    });
    
    and HTML IS
    
    0 讨论(0)
  • 2020-12-15 07:36
     jQuery("#dob").on('change',function(){
           var dob1 = jQuery(this).val();
           var dob = $.datepicker.formatDate('yy-mm-dd', new Date(dob1));
           var str = dob.split('-');    
           var firstdate=new Date(str[0],str[1],str[2]);
           var today = new Date();        
           var dayDiff = Math.ceil(today.getTime() - firstdate.getTime()) / (1000 * 60 * 60 * 24 * 365);
           var age = parseInt(dayDiff);
           jQuery("#age").html(age+' years old');
       });
    
    
    
    
    <input type="text" id="#dob" class="datepicker" name="dob" /><p id="age"></p>
    
    0 讨论(0)
提交回复
热议问题