required
和ng-required
之间有什么区别(表单验证)?
答案 0 :(得分:415)
AngularJS表单元素查找required
属性以执行验证功能。 ng-required
允许您根据布尔测试设置required
属性(例如,只需要字段B - 比如说,学生编号 - 如果字段A有一定的值 - 如果您选择“学生”作为选择)
例如,<input required>
和<input ng-required="true">
基本相同
如果您想知道为什么这就是这种方式,(而不只是制作<input required="true">
或<input required="false">
),这是由于HTML的限制 - {{ 1}}属性没有关联值 - 它仅仅是存在意味着(根据HTML标准)元素是必需的 - 所以angular需要一种方法来设置/取消设置所需的值(required
将是无效的HTML)
答案 1 :(得分:77)
我想为tiago's answer添加一个插件:
假设您使用ng-show
隐藏元素并在其上添加required
属性:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
会抛出类似的错误:
名称为&#39;&#39;的无效表单控件不可专注
这是因为您无法对required
元素进行hidden
验证。使用ng-required
可以更轻松地有条件地应用所需的验证,这真是太棒了!
答案 2 :(得分:17)
HTML属性 required="required"
是一个语句,告诉浏览器该表单是必需的,以使表单有效。 (required="required"
是XHTML表单,仅使用required
等效)
Angular属性 ng-required="yourCondition"
表示&#39; isRequired(yourCondition)&#39;并根据您的情况为您设置HTML属性动态。
另请注意 HTML版本令人困惑, 可能会写出像required="true"
或required="false"
这样的条件,只有存在属性很重要(现在意味着真实)!这是Angular通过ng-required
帮助您的地方。