【问题标题】:Angular/Breeze - Unable to enter decimal point in an HTML text inputAngular/Breeze - 无法在 HTML 文本输入中输入小数点
【发布时间】:2016-01-23 18:44:12
【问题描述】:

在我的 HTML 标记中,我有一个 text 类型的输入,它具有与十进制属性的双向绑定(使用 ng-model)。包含此十进制属性的对象是使用客户端上的 Breeze 查询获取的。我可以看到 Breeze 查询已成功获取数据,并且可以在文本输入中看到属性的初始值(即 1.25)。如果我删除小数点并再次尝试输入,则不允许我这样做,此时我只能输入一个数字 - 实际上我最终得到的是一个整数值。

谁能告诉我 Angular 或 Breeze 是否在幕后做某事将文本输入限制为只能接受数字而不是任何文本。我已经在浏览器中检查了有问题的输入元素,看看是否有任何额外的“螺栓固定”可能导致这种情况,但没有任何东西跳出来。 “修复”或解决方法是将输入类型更改为数字并将步骤属性设置为“任何”,但我仍然想了解原因,因此非常感谢任何帮助。

谢谢

【问题讨论】:

  • 我有same problem,当数据变化时解析字符串很容易,这使得无法获得小数点后的数字。

标签: html angularjs breeze


【解决方案1】:

我遇到了同样的问题,我认为问题在于由于双向绑定,该值预计在任何给定时刻都有效。显然是“1”。不是一个有效的数字,所以它不喜欢它。如果您键入“125”,然后返回并插入“。”它将接受“1.25”。

我目前的解决方案是使用去抖动更新:

<input type="{{type}}" ng-model="ngModel" ng-model-options="{ updateOn: 'default blur', debounce: { default: 1000, blur: 0 } }">

如果您根本不想超时,您可以只使用: ng-model-options="{ updateOn: '模糊' }

更多信息在这里:https://docs.angularjs.org/api/ng/directive/ngModelOptions

【讨论】:

    【解决方案2】:

    根据您的本地化设置,数字输入字段可能只接受数字和逗号(不是小数点)。由于验证是在 unser 输入上完成的,因此 angular 能够使用小数点设置值而不会失败。

    顺便说一句,当 AngularJS 拥有将字段链接到模型所需的一切时,为什么还要使用微风?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2023-03-17
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多