详解AngularJS中的表单验证(推荐)
程序员文章站
2023-11-18 14:54:46
angularjs自带了很多验证,什么必填,最大长度,最小长度...,这里记录几个有用的正则式验证
1.使用angularjs的表单验证
正则式验证
只需要配置一个正...
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中的表单验证,希望对大家有所帮助
推荐阅读
-
javascript验证form表单数据的案例详解
-
详解AngularJS中的表单验证(推荐)
-
Flask框架中密码的加盐哈希加密和验证功能的用法详解
-
ng-options和ng-checked在表单中的高级运用(推荐)
-
JSP开发中Apache-HTTPClient 用户验证的实例详解
-
对angularJs中自定义指令replace的属性详解
-
bootstrap中的 form表单属性role="form"的作用详解
-
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
-
shell中各种括号的作用详解()、(())、[]、[[]]、{}(推荐)
-
详解Python中的自定义密码验证