代码允许我输入带小数的数字,但我想限制小数,这样用户只能输入2位小数。
numbersOnly(event): boolean {
const charCode = (event.which) ? event.which : event.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46){
return false;
}
return true;
}
答案 0 :(得分:1)
正如cgTag强调的那样,这个解决方案,甚至是问题本身,打破了正确的Angular表单验证流程。这不是正确的Angular代码,而是普通JS与Angular的混合。
定义一个全局变量(或者如果你想要一个纯角度解决方案的服务),并修复你的事件处理程序以增加它:
var digits = 0;
var dotted = false;
numbersOnly(event): boolean {
const charCode = (event.which) ? event.which : event.keyCode;
if (charCode >= 48 && charCode <= 57) {
if (dotted) digits += 1;
return digits <= 2;
}
if (charCode == 46){
//We do not want to allow two dots
return ! dotted;
}
return false;
}
您可能还想检测退格 - 捕获数字或小数点的删除。从长远来看,也许walkthrough对你来说会更好。