Я создал пользовательский компонент ввода, в котором у меня есть @Input ('numberOfDecimals');Поэтому, используя эту информацию, я хочу ограничить количество десятичных символов, вводимых пользователем в компонент ввода.
Таким образом, если числоOfDecimals равно 2 и когда пользователь вводит 2,55, он не должен иметь возможность добавить еще один номер.
Я пытался (onkeypress) (onkeyup) (onkeydown), используя event.preventDefault (), но все еще на телефоне Android метод protectDefault не применяется и также возвращает false.
ЕслиЯ использую onkeydown и переписываю this.value элемента input, а затем, когда я пытаюсь удалить последнюю цифру, он ничего не делает.
также возвращение из этих методов не имеет никакого эффекта.
Вот пример кода: пользовательский компонент:
<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 разбирает событие .. проверяет код ключа, но он отличается на телефоне Android ... так что вы не можете запустить regEx.
Какие-либо решения?
Спасибо.