我有一个日期选择器

 <div class="form-group">
     <label for="date">Date</label>
     <input type="text" class="form-control" id="birthdate">
 </div>


并且我有一个输入文本,其中根据日期选择器上的选定日期自动计算年龄

<div class="form-group">
    <label for="age">Age</label>
    <input type="text" class="form-control" id="age">
</div>


这是我计算年龄的功能

getAge: function() {
    let birthdate = oValidationManager.sDate.value;
    if (birthdate != '') {
        let age = moment().diff(birthdate,'years');
        oValidationManager.iAge.innerHTML = age;
    }
    return;
},


用户选择生日后,如何在年龄输入文本上显示年龄?我尝试使用事件监听器(例如oninput),但是它不起作用。

我正在使用pikaday datepicker

最佳答案

使用Pikaday,您可以使用onSelect属性定义一个函数,只要所选日期发生更改,该函数就会被调用。例如:



let picker = new Pikaday({
  field: document.getElementById("birthdate"),
  onSelect: (date) => {
    document.getElementById("age").value = new Date((new Date() - date)).getUTCFullYear() - 1970;
  }
});

<script src="https://cdn.jsdelivr.net/npm/pikaday/pikaday.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/pikaday/css/pikaday.css">


 <div class="form-group">
     <label for="date">Date</label>
     <input type="text" class="form-control" id="birthdate">
 </div>
<div class="form-group">
    <label for="age">Age</label>
    <input type="text" class="form-control" id="age">
</div>

10-06 04:35