让AngularJS识别浏览器已经检测到的无效输入的推荐解决方案
Recommended solution to get AngularJS to recognize invalid input already detected by the browser?
我有一个问题(在Chrome中),其中一个数字输入被浏览器确定为无效,但根据Angular是有效的。
<form name="form_name">
<input type="number" step="any" id="a_number" name="a_number" min="0"
ng:model="aNumber"/>
<button type="button" ng:disabled="form_name.$invalid">Label</button>
</form>
- 如果我输入
5
,它会通过Angular和浏览器的验证,使按钮处于启用状态。 - 如果我输入
-5
, Angular和浏览器的验证都会失败,禁用按钮。 然而,如果我输入像
-
或5.a
这样的东西,它会使浏览器的验证失败,允许我指示和错误,但不会使Angular的验证失败,使按钮处于启用状态!在JSFiddle.net上运行
我认为Angular的验证永远不会被调用,因为浏览器在检测到错误后不会触发任何其他事件。有一个invalid
事件,但它只在表单提交或checkValidity()
被调用之后发出。如果我将输入更改为文本输入,并为浮点数添加pattern
, Angular就能够接收到正确的事件,并确定验证失败;但是,我必须将输入类型保留为number,以辅助电话软键(这种解决方法将完全忽略Angular无法检测表单错误的更大问题)。
那么,我应该有一个指令:
- 为像
keyup
这样手动调用checkValidity()
的事件附加一个监听器, - 为
invalid
添加一个监听器来手动设置Angular的有效性,并且 为
change
附加一个内部监听器来手动清除Angular的有效性?我认为你可以取消浏览器验证,使用angular验证
<form action="" novalidate>
novalidate将帮助您删除浏览器验证
相关文章:
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 隐藏和显示输入无效
- AngularJS-表单验证,如何滚动到第一个无效输入
- 在无效输入:JavaScript 上停止注册
- 如何显示无效输入的引导弹出框
- 我的警告标签未显示在无效输入上
- Javascript 表单验证 - PHP 变量作为 VALUE - 无效输入
- 反应组件和无效输入
- jQuery 验证表单,突出显示无效输入
- jQuery Validator无效输入字段在成功提交后消失
- 如何在不丢失无效输入的情况下呈现视图中的Backbone.Model错误
- 如果发生无效输入,如何使函数返回到某个位置
- 清除嵌套指令中的无效输入字段
- 如何获取无效输入的内容长度
- 让AngularJS识别浏览器已经检测到的无效输入的推荐解决方案
- 手动突出显示所有角度形式的无效输入
- 使用 jQuery 处理来自表单的无效输入
- 如何验证我的谷歌地图搜索文本框是否存在无效输入
- 在无效输入的文本框上显示警告
- 错误处理-我的JavaScript API是否应该抛出或返回无效输入的值