时间:2021-05-25
AngularJS自带了很多验证,什么必填,最大长度,最小长度...,这里记录几个有用的正则式验证
1.使用angularjs的表单验证
正则式验证
只需要配置一个正则式,很方便的完成验证,理论上所有的验证都可以用正则式完成
//javascript$scope.mobileRegx = "^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$";$scope.emailRegx = "^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$";$scope.pwdRegx = "[a-zA-Z0-9]*";<div class="form-group"><input class="form-control" name="mobile" type="text" ng-model="account.mobile" required ng-pattern="mobileRegx"/><span class="error" ng-show="registerForm.$submitted && registerForm.mobile.$error.required">*手机号不能为空</span><span class="error" ng-show="registerForm.$submitted && registerForm.mobile.$error.pattern">*手机号地址不合法</span></div><input type="text" ng-pattern="/[a-zA-Z]/" />数字
设置input的type=number即可
<div class="form-group col-md-6"><label for="password">预估时间</label><div class="input-group"><input required type="number" class="form-control" ng-model="task.estimated_time" name="time" /><span class="input-group-addon">分钟</span></div><span class="error" ng-show="newTaskForm.$submitted && newTaskForm.time.$error.required">*请预估时间</span> </div>邮箱
<input type="email" name="email" ng-model="user.email" />URL
<input type="url" name="homepage" ng-model="user.facebook_url" />效果
效果是实时的,很带感
2.使用ngMessages验证表单
相对于上面的每个验证都要自己写代码判断,ngMessages提供了一种更为简洁的方式
https://docs.angularjs.org/api/ngMessages/directive/ngMessages
angular.module('ngMessagesExample', ['ngMessages']);<form name="myForm"><label>Enter your name:<input type="text"name="myName"ng-model="name"ng-minlength="5"ng-maxlength="20"required /></label><pre>myForm.myName.$error = {{ myForm.myName.$error | json }}</pre><!--需要配合 ng-if使用,否则一开始就显示出来了, 你摸了就会触发验证--> <div ng-messages="myForm.myName.$error" style="color:maroon" role="alert" ng-if="myForm.myName.$touched"><div ng-message="required">You did not enter a field</div><div ng-message="minlength">Your field is too short</div><div ng-message="maxlength">Your field is too long</div></div></form>简直是第二次解放啊。。。
2.动态生成的表单的验证
如果你有一部分form的内容是动态生成的,数量和名字都不确定的时候,该如何验证这些生成的元素呢?其实维护一个动态的form本来就是个问题。但是在angular中,只需要记住一点:准备好你的数据,其他的交给angular。像下面这个例子,你只需要维护好一个数组,然后利用ng-repeat就可以快速的呈现到页面上。
其实动态的form和一般的form验证都是一致的,只是动态的form需要使用myForm[inout_name].$error的形式访问
<!-- 动态显示状态的负责人 --><div class="form-group col-md-6" ng-repeat="sta in task.status_table | orderBy : sta.sequence_order"><label>{{sta.status_name}} 负责人</label><select required class="form-control" ng-model="sta.user_id" ng-options="qa.id as qa.last_name+' '+qa.last_name for qa in taskUserList" name="{{sta.status_name}}"></select><div ng-messages="newTaskForm[sta.status_name].$error" ng-if="newTaskForm.$submitted || newTaskForm[sta.status_name].$touched"><p class="error" ng-message="required">*请选择负责人</p></div></div>3. 必填项加亮显
有些表单我们不希望粗暴的在下面添加文字信息提示验证,而是希望更简洁的方式,如:加亮边框,突出显示
需要做的只是在required验证没通过的时候添加class,改变元素的样式即可
<form name="loginForm" novalidate ng-submit="loginPost()" class="navbar-form navbar-right" ng-hide="login"><fake-autocomplete></fake-autocomplete><div class="form-group"><input name="user_name" required maxlength="50" type="text" class="form-control" placeholder="手机号或邮箱" ng-model="account.user_name" ng-class="{warn:loginForm.$submitted && loginForm.user_name.$error.required}"></div><div class="form-group"><input name="password" required type="password" maxlength="50" placeholder="密码" ng-model="account.password" ng-class="{'form-control':1,warn:loginForm.$submitted && loginForm.password.$error.required}"></div><button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-lock"></span> 登录</button></form>.warn {border-color: #f78d8d !important;outline: 0 !important;-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgb(239, 154, 154) !important;box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(239, 154, 154) !important;}以上所述是小编给大家介绍的详解AngularJS中的表单验证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
AngularJS输入验证AngularJS表单和控件可以验证输入的数据。输入验证在前面的几个章节中,你已经学到关于AngularJS表单和控件的知识。Angu
前一篇文章详解AngularJS实现表单验证说过,ng1.3+以后对于表单验证有了优化,它不再需要一个详细的表达式状态创建元素显示或隐藏。例如:我们在ng1.3
本文实例讲述了AngularJS验证信息框架的封装插件用法。分享给大家供大家参考,具体如下:AngularJS的表单验证规则angular.js的表单验证规则有
本文实例讲述了AngularJS学习笔记之表单验证功能。分享给大家供大家参考,具体如下:一、执行基本的表单验证表单angular.module('example
1什么是模板验证顾名思义模板验证就是通过一些angularjs的属性来在html标签中验证,为了往模板驱动表单中添加验证机制,你要添加一些验证属性,就像原生的H