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 输入数字行为pattern
或 ng-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 告诉我浮点数不是数字的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Typescript 中检查字符串是不是为数字/浮点数? [复制]
如何在 Typescript 中检查字符串是不是为数字/浮点数? [复制]
Linux shell 怎样判断输入是不是是数字啊?(包含浮点数)