[英]Text input - restrict no more than 5 decimals and more than number 100
我正在尝试创建一个文本输入,它限制用户输入超过五位小数,并只允许输入 0 - 100 之间的数字。例如:
100 - valid
29.39499 - valid
9.999 - valid
0 - valid
12.0828282 - invalid
101 - invalid
0.0123 - valid
.111 - valid
我将如何处理这个问题?
'decimalInput': new FormControl({value: ''}, [Validators.required, Validators.pattern(/^\d*\.?\d*$/), Validators.max(100), Validators.min(0)])
setDecimals(event){
/* My attempt to get less than 5 decimals and less than number 100:
let finalValue = event.target.value + event.key;
let countDecimals = function (value) {
if(Math.floor(value) === value) return 0;
return value.toString().split(".")[1].length || 0;
}
if(parseFloat(finalValue) >= 100 || countDecimals(parseFloat(finalValue)) > 5){
return false;
}*/
let charCode = (event.which) ? event.which : event.key;
if (charCode == 46) {
if (event.target.value.indexOf('.') === -1) {
return true;
} else {
return false;
}
} else {
if (charCode > 31 &&
(charCode < 48 || charCode > 57)){
return false;
}
}
return true;
}
<input type="text" pInputText formControlName="decimalInput" maxlength="8 (keypress)="setDecimals($event)">
这是一个正则表达式,它允许整数 100 带或不带尾随小数和零,或小于 100 的数字最多有五个小数位:
/(^100([.]0{1,5})?)$|(^\d{1,2}([.]\d{1,5})?)$/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.