【问题标题】:Observe changes in an input text观察输入文本的变化
【发布时间】:2019-08-04 14:22:19
【问题描述】:

我有一个日期选择器

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

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

<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

【问题讨论】:

  • 可以使用jquery改变事件
  • 你用的是什么日期选择器?这将决定您如何处理此问题,因为默认事件(例如 onchange)在日期选择器中的工作方式可能不同。
  • 更新问题。 @DevsiOdedra 我如何在原生 javascript 上做到这一点?

标签: javascript html


【解决方案1】:

使用 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>

【讨论】:

  • 这条线是按年龄计算的吗?新日期((新日期() - 日期)).getUTCFullYear() - 1970;因为我很好奇它是否准确
  • @Beginner 是的,它计算年龄(它会正常工作)但我在你的问题中看到你正在使用 moment.js,所以你应该使用它,因为它会做你想做的事更容易。我只是想给出一个尽可能少的依赖项的答案,以便更容易专注于内容。
猜你喜欢
  • 2020-10-06
  • 1970-01-01
  • 2019-06-30
  • 2015-08-20
  • 2019-03-25
  • 1970-01-01
  • 2017-03-04
  • 2022-11-29
  • 2012-08-05
相关资源
最近更新 更多