如何允许只有2位小数的数字

时间:2018-06-05 15:26:53

标签: javascript

代码允许我输入带小数的数字,但我想限制小数,这样用户只能输入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;
  }

1 个答案:

答案 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对你来说会更好。