我创建了一个自定义输入组件,其中有@Input('numberOfDecimals'); 因此,使用此信息,我想限制用户在输入组件中输入的十进制字符数。
因此,如果numberOfDecimals为2,并且当用户输入2.55时,他应该不能再添加一个数字。
我已经尝试使用event.preventDefault()(onkeypress)(onkeyup)(onkeydown),但仍在android手机上,preventDefault方法不适用,并且也返回false。
如果我使用onkeydown并重写输入元素的this.value,那么当我尝试删除最后一位数字时,它什么也没做。
从这些方法返回的也没有任何作用。
这是一些示例代码:
自定义组件:
<input (input)="change($event)" role="input" tabindex="1" contenteditable="true" #inputElement [ngClass]="{'input-invalid': regExError === true || invalid === true,'input-valid': valid === true}" (keyup)="onKeyUp($event)" (keydown)="onKeyDown($event)" [attr.inputmode]="inputMode" [attr.decimal]="decimalsEnabled" pattern="{{inputPattern}}">
和.ts代码:
@Input('numberOfDecimal') numberOfDecimal: number = 0;
onKeyDown(event: any) {
let value = event.target.value;
if (this.validateDecimalInput(value)) {
event.preventDefault();
return false;
}
}
validateDecimalInput(value): boolean {
if (this.decimalsEnabled && this.numberOfDecimal !== 0 && value !== '') {
let currentValue = this.value.split('.');
if (currentValue[1] !== undefined && currentValue[1].length > (this.numberOfDecimal - 1)) {
return true;
}
}
return false;
}
`
就像我提到的那样,我已经尝试了许多选项... onKeyUp解析事件..检查keyCode,但是在Android手机上是不同的..所以您不能运行regEx。
有解决方案吗?
谢谢。