Angularjs总结(一)表单验证
常用的表单验证
1.必须字段
html5特性 增加required
<input type="text" required />
2.最小长度和最大长度
<input type="text" ng-minlength="5" /> <input type="text" ng-maxlength="20" />
3.模式匹配——正则表达式
<input type="text" ng-pattern="/[a-zA-Z]/" />
4.邮件模式 将type设置为email
<input type="email" name="email" ng-model="user.email" />
5.数字 将type设置为number
<input type="number" name="age" ng-model="user.age" />
6.url 将type设置为url
<input type="url" name="homepage" ng-model="user.facebook_url" />
不常用(以下属性在form表单中)
1.屏蔽对表单的验证
novalidate
2.未修改过的表单 bool属性 true表示已修改过
formName.inputFieldName.$pristine;
3.已修改过的表单 bool属性
formName.inputFieldName.$dirty
4.通过表单验证 bool属性
formName.inputFieldName.$valid
5.未通过表单验证 bool属性
formName.inputFieldName.$invalid
例:
1 <form role="form" name="myForm" ng-submit="submitForm(myForm.$valid)" class="form-horizontal" novalidate> 2 <div class="form-group has-feedback"> 3 <div class="col-md-4"> 4 <label for="name">1.必填项</label> 5 </div> 6 <div class="col-md-8"> 7 <input class="form-control" id="name" name="name" type="text" required ng-model='user.name' /> 8 <span class="glyphicon glyphicon-ok form-control-feedback" 9 ng-show="myForm.name.$dirty && myForm.name.$valid"></span> 10 </div> 11 </div> 12 </form>
$pristine 【没修改】:{{myForm.name.$pristine }}
$dirty【修改过】:{{myForm.name.$dirty}}
$invalid【验证失败】:{{myForm.name.$invalid}}
$invalid【验证成功】:{{myForm.name.$valid}}
required:{{myForm.name.$error.required}}
ngMessages对表单进行优化
1.首先我们需引入angular.module('myApp', ['ngMessages']);
ng是通过$error来监视模型变化的,$error中会给出详细的错误信息
例子:
1 <form role="form" name="myForm" class="form-horizontal" novalidate> 2 <div class="form-group"> 3 <div class="col-md-2"> 4 用户名 5 </div> 6 <div class="col-md-10"> 7 <input type="text" placeholder="ng-Messages测试" name="name" ng-model="username.name" 8 ng-minlength=3 ng-maxlength=20 required /> 9 <hr /> 10 $error:{{myForm.name.$error}} 11 <hr /> 12 <div ng-messages="myForm.name.$error"> 13 <div ng-message="required">必填项</div> 14 <div ng-message="minlength">字符太短小于3</div> 15 <div ng-message="maxlength">字符太长大于20</div> 16 </div> 17 </div> 18 </div> 19 </form>
2.错误提示复用
将其作为模板,指定的路径由ng自动添加,这里需要使用到ng-messages-include命令;
首先将错误放到一静态页面error.html
1 <div ng-message="required">必填项</div> 2 <div ng-message="email">邮件格式不对</div> 3 <div ng-message="minlength">字符太短小于3</div> 4 <div ng-message="maxlength">字符太长大于20</div> 5 <!--在所用到的html页面中用ng-messages-include引入相应的静态页面--> 6 <div ng-messages="myForm.name.$error" ng-messages-multiple ng-messages-include="@Url.Content('~/Content/template/error.html)"></div>