保留输入值,而不管输入类型="number"是否验证
Preserving input value regardless of validation with input type="number"
我在使用angularJs和输入type="number"时遇到了奇怪的情况。基本上,如果我的输入类型是number,并且初始值超出了min和max定义的范围,那么我的初始值将被销毁。
我已经尽力说明这个问题- 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
};
}
正如您所看到的,第一个文本框没有任何问题,但第二个文本框根本不显示值。我绝对需要值被保留,同时也被验证为数字在一定范围内-所以有任何方法我们这?
我同意这是一个bug。
这是因为格式化程序在验证程序之前被应用。'number'
的格式化器 if (attr.min) {
var minValidator = function(value) {
var min = parseFloat(attr.min);
return validate(ctrl, 'min', ctrl.$isEmpty(value) || value >= min, value);
};
ctrl.$parsers.push(minValidator);
**ctrl.$formatters.push(minValidator);**
}
所有的$formatters会在验证器开始运行之前先运行…结帐NgModelController .
我想知道当$dirty != true时,如果他们基于有效性应用了格式化器,即如果验证结果为false,让格式化器产生,是否"第一次"。
对于minNumber,格式化器应该只是一个数字。为什么我们需要minNumber的格式化器?
升高https://github.com/angular/angular.js/issues/8264
在Angular团队修复之前,这个短期的解决方案将是使用你自己的指令来代替min。
恕我直言,这是一个bug。
如果您删除ng-model属性,您将看到初始值。
如果这不是一个错误,当我们输入无效的值,如40,我们不能看到输入的文本,因为它发生在初始化时。看,这不一致。
它只在input指令初始化时第一次发生。
IMO,即使模型值不是value,也应该保持原值,不设为空白。
抱歉没有提供解决方案。
相关文章:
- 改变“;onClick"这个jQuery的操作从清除输入文本改为将输入文本添加到下面的列表中
- 显示范围输入的值"无法读取属性'值'“为空”;
- JS/JQuery:动态添加"图案“;以及“;标题“;属性以形成输入
- "未捕获的类型错误:未定义的不是函数“;当向输入字段添加值时
- Escape”"字符,以便在jQuery中输入变量
- 当内联链接“#"被点击或输入到url中,就像链接到reddit评论时一样
- 价值的作用=“"在<输入ng模式>
- 将用户输入动态地附加到<script src=“">来自Java Script中的文本框
- Nodejs-Mysql:"SyntaxError:意外的输入结束“;如果查询包含'其中'
- "最大长度“;在输入类型=“0”的情况下不工作;数字“;在html文本框中
- 如何生成所有输入名称的列表=“"使用Javascript/JQuery的表单中的字段
- "意外的输入结束“;在javascript程序中
- Javascript setInterval()-为什么我的"输入“;参数更改为未定义
- <输入类型=“;提交”;name=“;提交”;值=“;提交”;class=“;bt提交"onclick=
- 在输入3个数字后,自动插入“-"并将限制设置为9个字符
- 如何附加<form:输入路径=“"/>使用jquery将
- & lt;输入类型=“file" /比;张贴数据为…
- & lt;输入类型=“file"祝辞,更改值
- & lt;输入类型=“file"祝辞属性在IE 11中显示不正确
- 删除值=";评论"只要从输入框中单击它