一、type值为number
<input type="number" />
二、通过ng2双向绑定与事件方式实现
1、html代码:
<input type="text" #inputVars (keyup)="onKeyPress(inputVars.value)" (keydown)="onKeyDown($event)" [(ngModel)]="inputValue"/>
2、angular代码片段
inputValue: any; onKeyPress(value: any) { if (value === '' || isUndefined(value) || value.length === 0) { this.inputValue = ''; return; } const str: any[] = value.split('.'); if (str && str.length === 2) { this.dotFlag = true; if (str[1] === '' && !isNaN(parseInt(str[0]))) { this.inputValue = value; return; } else { this.inputValue = checkIsFloat(value); return; } } else { this.dotFlag = false; this.inputValue = checkIsFloat(value); return; } function checkIsFloat(value: any) { const newValue = parseFloat(value); if (isNaN(newValue)) { return ''; } return newValue; } } private dotFlag: boolean = false; onKeyDown(event: any) { const keyCode = event.which || event.keyCode; if (keyCode === 190 && this.dotFlag) { this.dotFlag = true; event.returnValue = false; return; } else if (keyCode === 190) { this.dotFlag = true; } const specialkey = [8, 37, 39, 190].some((key) => key === keyCode); if ((keyCode >= 48 && keyCode <= 57 || specialkey)) { event.returnValue = true; } else { event.returnValue = false; } }
/*以下方式弃用,对中文输入法无效*/
三、通过事件方式
1、html 代码:
<input type="text" (keydown)="onKeyPress($event)" >
2、angular2 函数48=<keyCode<=57为数字,字母或者其他同理,对中文输入法无效(弃用)
onKeyPress(event:any){
const keyCode = event.which || event.keyCode; const specialkey = [8, 37, 39, 190].some((key) => key === keyCode); if ((keyCode >= 48 && keyCode <= 57 || specialkey)) { event.returnValue = true; } else { event.returnValue = false; }}