我有一个表单,其中我有一些输入字段 . 其中一些是 required 字段,一些是 email 字段 .
我对所需字段使用html5 required 属性,对电子邮件字段使用 type="email" 属性 .
我的问题是点击提交按钮后我必须显示 red border 所有无效字段 .
这是我的表格
<form name="addRelation">
<label>First Name</label>
<input type="text" placeholder="First Name" data-ng-model="model.firstName" id="FirstName" name="FirstName" required/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.FirstName.$error.required">first Name is required</span>
<label>Last Name</label>
<input type="text" placeholder="Last Name" data-ng-model="model.lastName" id="LastName" name="LastName" required/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.LastName.$error.required">Last Name is required</span>
<label>Email</label>
<input type="email" placeholder="Email" data-ng-model="model.email" id="Email" name="Email" required/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.Email.$error.required">Email address is required</span>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.Email.$error.email">Email address is not valid</span>
<input class="btn" data-ng-click="save(model)" type="button" value="SAVE" />
</form>
和我的保存功能 .
$scope.save= function (model) {
if ($scope.addRelation.$valid) {
//form is valid- so save it to DB
}
else {
//if form is not valid set $scope.addRelation.submitted to true
$scope.addRelation.submitted=true;
}
};
})
现在,当我点击保存按钮而不填充任何内容时,所有错误( Span )都会显示出来 . 但我想为所有无效字段显示红色边框 .
我试过以下案例:
input.ng-dirty.ng-invalid{border:1px solid black;}
但是当用户直接点击提交按钮时,这会失败 . (不触及输入字段)
input.ng-invalid{border:1px solid black;}
一旦用户打开注册表单,就会显示红色边框 .
请帮忙 .
3 回答
参考文章:Show red color border for invalid input fields angualrjs
我在所有输入字段上都使用了ng-class . 如下所示
当我点击保存按钮时,我将 newEmployee.submitted 值更改为 true (您可以在我的问题中查看) . 所以当我点击save时,一个名为 submitted 的类被添加到所有输入字段(最初由angularjs添加了一些其他类) .
所以现在我的输入字段包含这样的类
现在我使用下面的css代码 show red border on all invalid input fields (提交表格后)
谢谢 !!
Update:
我们可以在表单元素中添加ng-class,而不是将其应用于所有输入元素 . 因此,如果提交表单,则会将新类(已提交)添加到表单元素中 . 然后我们可以使用下面的选择器选择所有无效的输入字段
我创建了一个working CodePen example来演示如何实现目标 .
我将
ng-click
添加到<form>
并从按钮中删除了逻辑:这是更新的模板:
和控制器代码:
我希望这有帮助 .
如果表单已提交,则可以使用默认的ng-submitted设置 .
https://docs.angularjs.org/api/ng/directive/form
示例:http://jsbin.com/cowufugusu/1/