2016-08-09 3 views
2

У меня есть функция datepicker, которая должна проверять, превышает ли пользователь выше 18 или нет. Если нет, появится суфлер.datepicker - расчет возраста пользователя

Это то, что у меня есть сейчас, но это не работает, как я хочу - я подвожу возраст пользователя правильно, но не за месяц, а в год, который не является точным:

$(document).ready (function() { 
$('#dob2').datepicker(); 
$('#dob2').datepicker ("option", "changeMonth", true); 
$('#dob2').datepicker ("option", "changeYear", true); 
$('#dob2').datepicker ("option", "yearRange", "-100:-16"); 
$('#dob2').datepicker ("option", "maxDate", "-16Y"); 
$('#dob2').datepicker ("option", "minDate", "-100Y"); 
$('#dob2').datepicker ("option", "minDate", "-100Y"); 
$('#dob2').datepicker ("option", "onSelect", function(dateText, inst) { 
      var date = $(this).datepicker('getDate'); 
      var year = date.getFullYear(); 
      var curYear = new Date().getFullYear(); 
      age = curYear - year; 
      console.log(age); 
      if(age>=16 || age<18){ 
       alert("The minimum age requirement for supplementary card applicant is 18 years old. For applicant aged 16 and 17, and are going overseas to study, please submit the letter of acceptance from the education institution."); 
      } 
     }); 

    }); 

То, что я хочу это нужно сделать, чтобы Свиттер был показан для тех, кто в возрасте 16 & 17, также должен быть предложен тем, кому исполнилось 18 лет, но все же, чтобы пройти их дату рождения, поскольку технически они все еще 17 лет

+0

попробуйте любой из этих методов. http://stackoverflow.com/q/4060004/17447 :) – naveen

ответ

1

Попробуйте это.

$('#dob2').datepicker("option", "onSelect", function(dateText, inst) { 
    var dob = $(this).datepicker('getDate'); 
    var age = GetAge(dob); 
    if (age >= 16 && age < 18) { 
     alert("The minimum age requirement for supplementary card applicant is 18 years old. For applicant aged 16 and 17, and are going overseas to study, please submit the letter of acceptance from the education institution."); 
    } 
}); 

function GetAge(birthDate) { 
    var today = new Date(); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    } 
    return age; 
} 
+1

Это работает. Большое спасибо за вашу помощь! –

Смежные вопросы