【问题标题】:How to limit angular numeric input to N decimal places?如何将角度数字输入限制为 N 个小数位?
【发布时间】:2020-03-03 04:19:35
【问题描述】:

输入不应接受多于 N 位小数的数字。 N 被定义为输入。

例如,如果 N=3 并且用户想要输入 123.3456。应该只允许他进入 123.345。

我想实现这样的目标:

<input type="number" [(ngModel)]="value" nDecimalsInput [decimals]="2">

通过指令或其他方式...

【问题讨论】:

标签: angular typescript angular-directive angular2-directives angular-forms


【解决方案1】:

输入掩码就可以了。您可以尝试a lib from npm 或自己创建指令。

在你的情况下,lib 是这样使用的:

<input type="number" [(ngModel)]="value" mask="0*.00">

【讨论】:

    【解决方案2】:

    你可以在 (keydown)="maxLength()" 上做一个简单的函数

    maxLength() {
    if (N && this.myFormControl.value.toString().split('.')[1].length === N) {
          return false;
        }
    }
    

    【讨论】:

    • 谢谢,但是 this.myFormControl.value 在 keydown 时刻没有更新。它仍然没有改变值(keydown在值改变之前触发)
    • @DjordjeMiladinovic,是的,这是预期和期望的行为。您想在输入新数字之前检查您是否已达到数字限制。因此,如果您的 N = 3 并且您的号码在输入下一个数字后为 1.222,则 maxLength 函数将检查表示 1.222 的数字并查看是否已达到限制,并且不会通过返回“false”来添加另一个。
    【解决方案3】:

    所以你可以这样做来覆盖或挂钩事件(如更改或键):

    parseFloat($(this).val()).toFixed(3)
    

    或者使用如下掩码: https://github.com/assisrafael/angular-input-masks

    <input type="text" name="field" ng-model="number" ui-number-mask="3">
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2018-12-24
      • 1970-01-01
      • 2018-11-16
      相关资源
      最近更新 更多