Я использую Angular 19 Ceakdown Event на текстовом поле. Это должно разрешать только числа и десятичные десятичные знаки до 2 мест. Допустимые числа: 123,45, 675,1, 12345 и т. Д. < /p>
Это работает правильно для всех ключей, кроме пробела. Хотя я проигнорировал это. При щелчке Space Bar, 2 три раза он вставляет пространство в текстовое поле. Мой код ниже: < /p>
onKeyDown = (event:KeyboardEvent): boolean {
const regex = new RegExp(/^[0-9.]*$/);
if(!regex.test(event.key) && event.key.length === 1 && event.code !== "Space") {
event.preventDefault();
return false;
}
const target = event.target as HTMLInputElement;
const start = target?.selectionStart || 0;
const value = target.value.substring(0,start)+event.key+target.value.substring(start);
const newRegex = new RegExp(/^(0|[1-9]\d*)?(\.\d{0,2})?$/
if(!newRegex.test(value) && event.key.length === 1 && event.code !== "Space") {
event.preventDefault();
return false;
}
return true;
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-ignored