【问题标题】:Is it possible to trigger input/change event when something is changed in input type="date"?当输入类型=“日期”中的某些内容发生更改时,是否可以触发输入/更改事件?
【发布时间】:2020-04-21 14:11:22
【问题描述】:

let date = document.getElementsByTagName('input')[0];
date.addEventListener('input',function(){
  console.log('input');
});
<input type="date">

let date = document.getElementsByTagName('input')[0];
date.addEventListener('change',function(){
  console.log('change');
});
<input type="date">

它们是相同的代码,我只是使用了两种不同的事件类型。

问题是,当日期的所有三个部分都更改时,事件就会触发。例如,如果我有 yyyy-mm-21 或 2020-04-dd 事件不会触发。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date

这里说只有这两个事件输入 type="date" 可以理解。如果我想在每次更改日期时都触发事件,我该怎么办?

请 没有 JQUERY

【问题讨论】:

  • @caramba 抱歉,日期,我会编辑它

标签: javascript events input


【解决方案1】:

您可以对所有存在的“更改”事件进行一些创意。取决于你想在每个事件上做什么。这只是为了显示一些选项,显然您可以为每个事件分配所需的任何功能。

let date = document.querySelector('input[type="date"]');

let myAwesomeFunction = function(event){
  console.log('event.type: ', event.type, ' value: ', event.target.value );
};

date.addEventListener('change', myAwesomeFunction);
date.addEventListener('click', myAwesomeFunction);
date.addEventListener('keyup', myAwesomeFunction);
date.addEventListener('keydown', myAwesomeFunction);
date.addEventListener('blur', myAwesomeFunction);
date.addEventListener('focus', myAwesomeFunction);
date.addEventListener('focusout', myAwesomeFunction);
<input type="date">

不幸的是,在设置所有字段(日、月、年)之前,您不会获得值。 (如果有人对此有解决方案,请发表评论)

【讨论】:

  • @gamelover 很高兴它有帮助!快乐编码
【解决方案2】:

使用onkeyup 在每个键上触发,onchange 在用户从选择器中选择日期时触发。

let date = document.getElementsByTagName('input')[0];
date.addEventListener('keyup',function(){
  console.log('keyup');
});
date.addEventListener('change',function(){
  console.log('change');
});
<input type="date">

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-01-21
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
相关资源
最近更新 更多