angular - Angular Directive 从 keydown 事件中获取剪贴板数据
问题描述
我创建了只控制数字输入的指令,现在我只想允许粘贴的数字数据。我打算做以下事情:检查clipbroad中的数据,如果数字是好的,否则跳过它。但是我还没有找到从clipbroad获取数据的方法,所以我必须这样做
export class NumberOnlyDirective {
private regex: RegExp = new RegExp("^[0-9]{0,8}([,.][0-9]{0,3})?$");
private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
constructor(private el: ElementRef) {
}
@HostListener('keydown', ['$event'])
onKeyDown(event) {
if (event.ctrlKey && event.key == "v") {
return;
}
if (event.ctrlKey && event.key == "c") {
return;
}
if (event.ctrlKey && event.key == "x") {
return;
}
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
let current: string = this.el.nativeElement.value;
let next: string = current.concat(event.key);
if (next && !String(next).match(this.regex)) {
event.preventDefault();
}
}
}
解决方案
为什么不依靠 HTML 来做到这一点?
<input type="number">
然后,当您提交表单时,
if (isNaN(this.myControl.value)) {
console.log('Not a number');
}
推荐阅读
- typo3 - 如何通过viewhelper从内容元素访问页面排版中的复杂变量?
- r - R keras 在第一次迭代时冻结
- kubernetes - 在 K3s Kubernetes 中创建 NFS 共享的链接
- python - 在 Python 中从另一个具有重复值的 JSON 创建 JSON
- html - 在 MSSQL 中显示图像保存为数据类型图像
- javascript - 在地图循环中将字符串转换为日期 - ReactJS
- sharepoint - 在 sharepoint 管理中心查找 SITEID
- html - HTML 输入字段触发更新用户名以保存密码提示
- google-apps-script - 换行符 - Gmail 应用程序脚本
- java - java中的动态雪花jdbc连接