javascript - 我怎么知道是什么触发了变化?
解决方案
该onchange
事件将仅在来自 UI 和上下键输入的每个输入处触发。
否则,我们必须松开焦点,或者按下回车键来触发这个事件。
所以我们可以检查我们是否仍然是 activeElement 并因此从 UI 中触发,或者不是来自于打字。
除了 Enter 键之外...
let enter_down = false;
inp.addEventListener('change', e => {
if(enter_down || inp !== document.activeElement) {
console.log('typing');
}
else {
console.log('arrows');
}
});
inp.addEventListener('keydown', e => {
if(e.key === 'Enter') {
enter_down = true;
}
});
inp.addEventListener('keyup', e => {
if(e.key === 'Enter') {
enter_down = false;
}
});
<input type="number" id="inp">
推荐阅读
- jquery - 如何使用字体真棒图标而不是jquery中的文本进行切换
- javascript - ASP.NET 将模型数据传递给 site.js
- excel - Excel 到 Word 到 PDF 使用 VBA
- angular - 在自定义结构指令中获取未定义的模板引用(ng-template)
- database - 用于可搜索性的键值数据库建模
- python - 熊猫:如何将应用与一系列列表一起使用
- typescript - 如何修复具有多个功能的接口的“没有重载匹配此调用”
- c++ - c++中的整数溢出
- python - 如何从 python 中的 .mat 文件创建训练数据存储,并将文件夹名称作为类标签?
- javascript - 我的选择组件不执行 onChange (React.js)