【发布时间】:2014-07-18 18:34:11
【问题描述】:
我在使用 angularJs 和 input type="number" 时遇到了奇怪的情况。基本上,如果我输入的类型号和初始值超出了最小值和最大值定义的范围,我的初始值就会被破坏。
我用小提琴来说明问题 - http://jsfiddle.net/PK3QH/2/
HTML:
<div ng-controller="MyCtrl">
<input ng-model="bindData.SomeAmount" type="number" required="required" />
<br />
<input ng-model="bindData.SomeAmount" type="number" required="required"
min="2" max="10" />
</div>
Javascript:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.bindData = {
SomeAmount: 1
};
}
如您所见,第一个文本框可以正常工作,但第二个文本框根本不显示该值。我肯定需要保留价值,同时还要在一定范围内将其验证为数字 - 那么我们有什么办法吗?
【问题讨论】:
-
为什么会令人惊讶?当它按预期工作时,为什么还要称它为错误?
-
是的,我同意@mplungjan。看来您希望的行为会发生。
-
好吧,文档 (docs.angularjs.org/api/ng/input/input%5Bnumber%5D) 说它会引发验证错误——因此可以选择使用
novalidate选项 (docs.angularjs.org/guide/forms) 禁用验证。我假设你想要验证,但在任何其他情况下...... -
请不要进入语义,我将编辑问题以删除单词“bug”。但我希望每个人都明白,如果它是有效的数字,我希望价值被保留,而不是被破坏。
-
所以基本上你不想验证范围,对吧?那你为什么要使用
min和max属性呢?
标签: javascript angularjs