angularjs的form手动验证

当用户从前端输入信息之后,给用户直接的视觉反馈是非常重要的。表单验证不仅提供了视觉上的反馈,而且还能保证用户输入的正确性,从前端为后台提供尽可能多的保护。

以下记录一下,在我工作中使用的一些form验证的示例。

以代码为例,进行举例说明:

<form name="registerForm" novalidate>
                <div class="oneTagInfo">
                    <div class="tagTextDescribe">
                        <span class="redFont">*</span>名称
                    </div>
                    <div class="tagInfoInput">
                        <div class="myInputDiv">
                            <input type="text" class="myInput" placeholder="长度小于10的昵称" name="nickName" ng-maxlength="10" ng-model="nickName" required>
                            <div class="inputToolBar">
                                <div class="okMark" ng-show="registerForm.nickName.$valid && registerForm.nickName.$dirty"><i class="glyphicon glyphicon-ok"></i></div>
                                <div class="cancleContent" ng-hide="registerForm.nickName.$error.required" ng-click="cancleContent($event,'nickName')"><i class="glyphicon glyphicon-remove"></i></div>
                            </div>
                        </div>
                        <span class="errorMsg redFont" ng-show="registerForm.nickName.$invalid && registerForm.nickName.$dirty">
                            <span ng-show="registerForm.nickName.$error.required">请输入您的昵称名</span>
                            <span ng-show="registerForm.nickName.$error.maxlength">昵称长度不能超过10</span>
                        </span>
                    </div>

                </div>
                <div class="oneTagInfo">
                    <div class="tagTextDescribe">
                        <span class="redFont">*</span>登录密码
                    </div>
                    <div class="tagInfoInput">
                        <div class="myInputDiv">
                            <input type="password" class="myInput" placeholder="长度为6-15位,只能包含数字和字母" name="password" ng-minlength="6" ng-maxlength="15" ng-pattern="/[0-9a-zA-Z]/" ng-model="password" required>
                            <div class="inputToolBar">
                                <div class="okMark" ng-show="registerForm.password.$valid && registerForm.password.$dirty"><i class="glyphicon glyphicon-ok"></i></div>
                                <div class="cancleContent" ng-hide="registerForm.password.$error.required" ng-click="cancleContent($event,'password')"><i class="glyphicon glyphicon-remove"></i></div>
                            </div>
                        </div>
                        <span class="errorMsg redFont" ng-show="registerForm.password.$invalid && registerForm.password.$dirty">
                            <span ng-show="registerForm.password.$error.required">请输入您的密码</span>
                            <span ng-show="registerForm.password.$error.minlength">密码长度不小于6</span>
                            <span ng-show="registerForm.password.$error.maxlength">密码长度不能超过15</span>
                            <span ng-show="registerForm.password.$error.pattern">密码包含非法字符</span>
                        </span>
                    </div>
                </div>
                <div class="oneTagInfo">
                    <div class="tagTextDescribe">
                        <span class="redFont">*</span>确认密码
                    </div>
                    <div class="tagInfoInput">
                        <div class="myInputDiv">
                            <input type="password" class="myInput" name="passwordagain" placeholder="重复密码" ng-model="passwordagain" required>
                            <div class="inputToolBar">
                                <div class="okMark" ng-show="registerForm.passwordagain.$valid && registerForm.passwordagain.$dirty"><i class="glyphicon glyphicon-ok"></i></div>
                                <div class="cancleContent" ng-hide="!passwordagain" ng-click="cancleContent($event,'passwordagain')"><i class="glyphicon glyphicon-remove"></i></div>
                            </div>
                        </div>
                        <span class="errorMsg redFont" ng-show="registerForm.password.$valid  && registerForm.passwordagain.$dirty">
                            <span ng-show="passwordagain != password">俩次输入不一样</span>
                        </span>
                    </div>
                </div>
                <div class="oneTagInfo">
                    <div class="tagTextDescribe">
                        <span class="redFont">*</span>手机号
                    </div>
                    <div class="tagInfoInput">
                        <div class="myInputDiv">
                            <input type="text" class="myInput" placeholder="手机号" ng-model="phoneNum" name="phoneNum" ng-pattern="/^1[34578]\d{9}$/" required>
                            <div class="inputToolBar">
                                <div class="okMark" ng-show="registerForm.phoneNum.$valid && registerForm.phoneNum.$dirty"><i class="glyphicon glyphicon-ok"></i></div>
                                <div class="cancleContent" ng-hide="registerForm.phoneNum.$error.required " ng-click="cancleContent($event,'phoneNum')"><i class="glyphicon glyphicon-remove"></i></div>
                            </div>
                        </div>
                        <span class="errorMsg redFont" ng-show="registerForm.phoneNum.$invalid && registerForm.phoneNum.$dirty">
                            <span ng-show="registerForm.phoneNum.$error.required">请输入您的手机号码</span>
                            <span ng-show="registerForm.phoneNum.$error.pattern">手机号码有误,请重新输入</span>
                        </span>
                    </div>
                </div>
                <div class="oneTagInfo">
                    <div class="submitBtn" ng-class="{'disabledSub':registerForm.$invalid||passwordagain != password}" ng-click="submitRegInfo()">
                        提交
                    </div>
                </div>

            </form>

1.为form表单命名为registerFrom,angularjs解析之后,registerFrom成为一个$scope 的对象。

2.novalidate关闭HTML5的验证

3.为<input>提供需要满足的条件,angularjs提供一下几种方式:

1. require  必须输入,不能为空

2. ng-minlength/ng-maxlength 最小长度和最大长度

3.ng-pattern  需要满足的正则表达式

4.表单的几种状态:

1. formName.inputName.$invalid  该input框验证失败

2. formName.inputName.$valid  该input框验证成功

3. formName.inputName.$dirty 布尔型属性,当且仅当用户实际已经修改的表单。不管表单是否通过验证

4. formName.inputName.$invalid 布尔值属性,表示用户是否修改了表单。如果为ture,表示没有修改过;false表示修改过

5. forName.inputName.$error  错误  包含当前表单的所有验证内容,以及它们是否合法的信息

5.当表单输入验证不通过时,起绑定的ng-modal值为“”;

6.angularjs为验证出现错误后,自动添加一些css类,如下:

.ng-valid         {  }
.ng-invalid     {  }
.ng-pristine     {  }
.ng-dirty         {  }
/* really specific css rules applied by angular */
.ng-invalid-required         {  }
.ng-invalid-minlength         {  }
.ng-valid-max-length         {  }
可以根据自己添加喜欢的样式。


只是个人觉得这个方式比较方便,记录下来,分享一下,请多多指教。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值