Angular 告诉我浮点数不是数字

Posted

技术标签:

【中文标题】Angular 告诉我浮点数不是数字【英文标题】:Angular tells me floats are not numbers 【发布时间】:2016-05-25 15:38:50 【问题描述】:

如果使用非整数,Angular 会用红色突出显示文本框。

(function()
 
     var app = angular.module('example', []);

     app.controller('InputController', function()
		    
			this.number = '';
		    
		   );
 )();
<html ng-app="example">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form ng-controller="InputController as ctl" ng-submit="inputForm.$valid">
  <input type="number" step="0.001" pattern="(-|\+)?\d*\.?\d+" ng-model="ctl.number">
  <input type="submit">
</form>
</html>

如果我将step 设置为,例如0.001,那么当我输入小数点后三位以上的内容时,它将突出显示红色,例如9.1234.

如果我输入模式(-|\+)?\d*\.?\d+,那什么都不会改变。

将步骤与模式结合并不能解决我的问题。

我怎样才能让它接受任何数字,而不仅仅是整数,而且只有数字?

【问题讨论】:

How to handle floats and decimal separators with html5 input type number的可能重复 不是角度问题。这是一个 html5 输入数字行为 patternng-pattern\d+(\.\d+)? @MarcosPérezGude 相关问题说number 允许小数。所以我怀疑这是一个角度问题。 骗子的答案都没有回答我的问题。不过,感谢您的尝试。 【参考方案1】:

您有两个选项可以设置步长,最多 n 个小数位有效。

<input type="number" ng-model="ctl.number" step="0.01">

或按照Tushar 的建议进行操作,并使用ng-pattern 自行验证

【讨论】:

感谢您花时间回答。添加步骤不允许任何数字,例如,您的步骤不允许 0.0001。 ng-pattern(或模式)不会阻止输入框变红。 为了快速解决问题,您可以让步长非常小step="0.00000000000000001",但这不是长期的正确答案

以上是关于Angular 告诉我浮点数不是数字的主要内容,如果未能解决你的问题,请参考以下文章

js中如何判断两个浮点数是不是相等

如何在 Typescript 中检查字符串是不是为数字/浮点数? [复制]

如何在 Typescript 中检查字符串是不是为数字/浮点数? [复制]

Linux shell 怎样判断输入是不是是数字啊?(包含浮点数)

如何在 Delphi 中将浮点数转换为字符串,指定有效数字,而不是十进制数字(而不是 G 格式)

计算机中的定点数与浮点数 浮点数用 正负位 幕数 数字部分来表示