angular2 通过指令限制输入
2024-08-29 11:32:00
最近在写一个表单,有些输入框只能输入数字,单又不想每次写表单的时候,都要去验证输入的是不是数字,
那么就想到直接限制只能输入数字,通过指令实现
这里需要注意的是,不只更改DOM的值,如果input为数据绑定的值,需要更新绑定值,
所以需要引入NgModel,通过viewToModelUpdate,来更新绑定值
import { Directive } from '@angular/core';
import { NgModel } from '@angular/forms'; // 自定义指令
@Directive({
selector: 'input[number]',
host: {
'(keypress)': 'onkeypress($event)',
'(keyup)': 'onkeyup($event)'
},
inputs: ['maxValue'],
}) export class NumberInput {
maxValue: number; constructor(public control: NgModel) {
} onkeyup(event) {
let input = event.target;
if (input.value == "") {
input.value = 0;
this.control.viewToModelUpdate(0);
}
let newValue = parseInt(input.value);
if (newValue > this.maxValue) {
input.value = this.maxValue;
this.control.viewToModelUpdate(this.maxValue);
}
else
{
input.value = newValue;
this.control.viewToModelUpdate(newValue);
} } onkeypress(event) {
// 判断是否为数字
let inputStr = String.fromCharCode(event.keyCode);
if (!parseInt(inputStr)) {
return false;
}
} }
引用方式:
import {
NumberInput
} from './directives'; @NgModule({
declarations: [
NumberInput
],
imports: [
],
providers: [
],
exports: [
]
})
html代码
<input type="number" NumberInput />
最新文章
- Linux系统中Xampp+Bugfree安装
- mosquitto_pub和mosquitto_sub 命令参数说明
- Android+PHP服务器+MySQL实现安卓端的登录
- 查询局域网内在线电脑IP
- [Java Basics] Collection
- Linux Shell脚本攻略 读书笔记
- 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图
- Python-方法重载的问题
- 《Windows游戏编程技巧大师》就DirectDraw而创建DirectDraw知识笔记
- MVC 框架
- 计算机网路中CDP,LLDP,STP的详解
- P3327 [SDOI2015]约数个数和
- ionic2一个需求模块的文件该是这样子的
- python读取指定字节长度的文本
- layer弹窗插件自带自写经验
- Redis源码研究—基础知识
- Go 示例测试实现原理剖析
- java算法 蓝桥杯 文化之旅
- JavaScript 匹配字符串偶数位置的字符 及匹配 $ 符号
- 28. LAST() 函数