javascript - 将零填充到输入字段但将其延迟一秒
问题描述
我有一个日期选择器的输入字段 - 用户可以使用键盘输入分钟,当他们输入小于 10 的值时,它会自动添加初始零 - 所以时间10:1
看起来像10:01
(有一个小时输入和一分钟输入字段) - 我遇到的问题是它立即显示零,因此很难编辑具有不同值的分钟字段 - 如何使用超时或类似方法延迟 displayMinute 函数的最佳方法,以便在调用时延迟执行此操作一秒钟左右?
// function to prepend 0 to a minute if the minute is under 10
Calendar.prototype.displayMinute = function (minute) {
minute = (minute < 10) ? '0' + minute : minute;
return minute;
};
template: "<input type=\"text\" (keyup)='updateMinuteInput($event)' [value]=\"displayMinute(currentMinute)\" >\n",
解决方案
您应该更新基础输入中的值,而不是更新显示的值。
然后,您可以对输入事件使用去抖动功能,以便延迟。
class Calendar {
constructor() {
this.updateMinuteInput = EventEmitter();
this.updateMinuteInput.debounceTime(1000).do(() => this.padMissingZero)
}
// function to prepend 0 to a minute if the minute is under 10
padMissingZero = function () {
minute = this.value.split(':')[1];
if (minute === null || minute === undefined) return;
minute = parseInt(minute, 10);
minute = (minute < 10) ? '0' + minute : minute;
this.value = this.value.split(':')[0] + minute
};
}
template: "<input type=\"text\" [value]="value" (keyup)='updateMinuteInput($event)'>\n",
有关更完整的示例,请参见Angular 和 debounce
推荐阅读
- javascript - 创建新的 RegExp 对象从变量中删除一个字符
- c# - 如何修复异常消息 - .Net 4.5 中的“身份验证失败,因为远程方已关闭传输流”
- android - 跟踪原生库 Android 中的所有函数
- typo3 - 如何为较新的 TYPO3 版本调整 TYPO3 扩展?
- php - 工匠迁移 Symfony\Component\Debug\Exception\FatalThrowableError 出错:找不到类“Doctrine\DBAL\Driver\PDOMySql\Driver”
- html - 停止 IMG 标签溢出
- android - 如何在 CollapsingToolbarLayout 中添加边距工具栏
- javascript - 从 API 数组中过滤图像
- node.js - 如何通过一组脚本而不是“npm start”从 Visual Studio 运行和调试 NodeJS 项目?
- javascript - Vue.js 捕获 json 响应