离子3,离子输入的小数位数限制

时间:2018-10-17 18:36:41

标签: angular ionic3

我创建了一个自定义输入组件,其中有@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。

有解决方案吗?

谢谢。

0 个答案:

没有答案