Ran*_*ddy 39 forms validation angularjs
我有一个表单,其中我有一些输入字段.其中一些是必填字段,一些是电子邮件字段.
我正在使用必需字段的html5 必需属性和电子邮件字段的type ="email"属性.
我的问题是点击提交按钮后我必须显示所有无效字段的红色边框.
这是我的表格
<form name="addRelation">
<label>First Name</label>
<input type="text" placeholder="First Name" data-ng-model="model.firstName" id="FirstName" name="FirstName" required/><br/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.FirstName.$error.required">first Name is required</span><br/>
<label>Last Name</label>
<input type="text" placeholder="Last Name" data-ng-model="model.lastName" id="LastName" name="LastName" required/><br/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.LastName.$error.required">Last Name is required</span><br/>
<label>Email</label>
<input type="email" placeholder="Email" data-ng-model="model.email" id="Email" name="Email" required/><br/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.Email.$error.required">Email address is required</span><br/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.Email.$error.email">Email address is not valid</span><br/>
<input class="btn" data-ng-click="save(model)" type="button" value="SAVE" />
</form>
Run Code Online (Sandbox Code Playgroud)
和我的保存功能.
$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;
}
};
})
Run Code Online (Sandbox Code Playgroud)
现在,当我点击保存按钮而不填充任何内容时,所有错误(跨度)都会显示出来.但我想为所有无效字段显示红色边框.
我试过以下案例:
input.ng-dirty.ng-invalid{border:1px solid black;}
Run Code Online (Sandbox Code Playgroud)
但是当用户直接点击提交按钮时,这会失败.(不接触输入字段)
input.ng-invalid{border:1px solid black;}
Run Code Online (Sandbox Code Playgroud)
一旦用户打开注册表单,就会显示红色边框.
请帮忙.
Ran*_*ddy 47
我在所有输入字段上都使用了ng-class.如下所示
<input type="text" ng-class="{submitted:newEmployee.submitted}" placeholder="First Name" data-ng-model="model.firstName" id="FirstName" name="FirstName" required/>
Run Code Online (Sandbox Code Playgroud)
当我点击保存按钮时,我将newEmployee.submitted值更改为true(您可以在我的问题中查看它).因此,当我单击save时,名为submitted的类将添加到所有输入字段(还有一些其他类最初由angularjs添加).
所以现在我的输入字段包含这样的类
class="ng-pristine ng-invalid submitted"
Run Code Online (Sandbox Code Playgroud)
现在我使用下面的css代码在所有无效的输入字段上显示红色边框(提交表单后)
input.submitted.ng-invalid
{
border:1px solid #f00;
}
Run Code Online (Sandbox Code Playgroud)
谢谢 !!
更新:
我们可以在表单元素中添加ng-class,而不是将其应用于所有输入元素.因此,如果提交表单,则会将新类(已提交)添加到表单元素中.然后我们可以使用下面的选择器选择所有无效的输入字段
form.submitted .ng-invalid
{
border:1px solid #f00;
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*ets 11
如果表单已提交,则可以使用默认的ng-submitted设置.
https://docs.angularjs.org/api/ng/directive/form
例如:http://jsbin.com/cowufugusu/1/
我创建了一个有效的CodePen示例来演示如何实现目标.
我添加ng-click了<form>并从按钮中删除了逻辑:
<form name="addRelation" data-ng-click="save(model)">
...
<input class="btn" type="submit" value="SAVE" />
Run Code Online (Sandbox Code Playgroud)
这是更新的模板:
<section ng-app="app" ng-controller="MainCtrl">
<form class="well" name="addRelation" data-ng-click="save(model)">
<label>First Name</label>
<input type="text" placeholder="First Name" data-ng-model="model.firstName" id="FirstName" name="FirstName" required/><br/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.FirstName.$invalid">First Name is required</span><br/>
<label>Last Name</label>
<input type="text" placeholder="Last Name" data-ng-model="model.lastName" id="LastName" name="LastName" required/><br/>
<span class="text-error" data-ng-show="addRelation.submitted && addRelation.LastName.$invalid">Last Name is required</span><br/>
<label>Email</label>
<input type="email" placeholder="Email" data-ng-model="model.email" id="Email" name="Email" required/><br/>
<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><br/>
<input class="btn" type="submit" value="SAVE" />
</form>
</section>
Run Code Online (Sandbox Code Playgroud)
和控制器代码:
app.controller('MainCtrl', function($scope) {
$scope.save = function(model) {
$scope.addRelation.submitted = true;
if($scope.addRelation.$valid) {
// submit to db
console.log(model);
} else {
console.log('Errors in form data');
}
};
});
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.
| 归档时间: |
|
| 查看次数: |
125317 次 |
| 最近记录: |