Angualrjs 表单的两种验证(失去焦点验证和点击提交验证)

angularjs提供了表单验证,但是验证的过程交互体验很不好,比如重设密码,重复密码的时候一键入就会提示密码不正确,现整理了两种方法,仅供借鉴。

一,点击提交验证

<form action="" class="form-horizontal  col-md-9" name="reset_pwd" ng-submit="resetPwd()">
    <div class="form-group">
        <label  class="col-sm-2 control-label"></label>
        <div class="col-sm-8">
            <input type="password" name="mycompwd" class="form-control"  ng-model="mycompwd" placeholder="请输入密码">
        </div>
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label">重复密码</label>
        <div class="col-sm-8">
            <input type="password" name="resetmycompwd" class="form-control" ng-model="resetmycompwd" placeholder="再次输入密码" required>
        </div>
        <span style="color:red" ng-show="mycompwd!=resetmycompwd && reset_pwd.resetmycompwd.$dirty && reset_pwd.submitted
        ">密码不一致</span>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary" >确认</button>
        <button type="button" class="btn btn-default" ng-click="resetpwd_cancle()">取消</button>
    </div>
</form>
当用户试图提交表单时,你可以在作用域中捕获到一个submitted值,然后对表单内容进行验证并显示错误信息。

JS代码

$scope.submitted = false;
$scope.resetPwd = function(){
    console.log(666);
    if($scope.reset_pwd.$valid && $scope.mycompwd == $scope.resetmycompwd){
        console.log('重置成功,进行其他操作');
    }else{
        $scope.reset_pwd.submitted = true;
    }
}
亲测可用。

第二种失去焦点验证

<form action="" class="form-horizontal  col-md-9" name="reset_pwd" ng-submit="resetPwd()">
    <div class="form-group">
        <label  class="col-sm-2 control-label">&nbsp&nbsp</label>
        <div class="col-sm-8">
            <input  type="password" name="mycompwd" class="form-control"  ng-model="mycompwd" placeholder="请输入密码">
        </div>
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label">重复密码</label>
        <div class="col-sm-8">
            <input ng-focus type="password" name="resetmycompwd" class="form-control" ng-model="resetmycompwd" placeholder="再次输入密码" required>
        </div>
        <span style="color:red" ng-show="mycompwd!=resetmycompwd && reset_pwd.resetmycompwd.$dirty
            && !reset_pwd.resetmycompwd.$focused
        ">密码不一致</span>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary" >确认</button>
        <button type="button" class="btn btn-default" ng-click="resetpwd_cancle()">取消</button>
    </div>
</form>
JS代码

app.directive('ngFocus',[function(){
    var focusClass = 'ng-focused';
    return{
        restrict:'AE',
        require:'ngModel',
        link:function(scope,element,attrs,ctrl){
            ctrl.$focused = false;
            element.bind('focus',function(e){
                element.addClass(focusClass);
                scope.$apply(function(){
                    ctrl.$focused = true;
                });
                element.bind('blur',function(e){
                    element.removeClass(focusClass);
                    scope.$apply(function(){
                        ctrl.$focused = false;
                    });
                });
            })
        }
    };
}]);
/

注意HTML标红的地方。正是区分两种方法的关键。欢迎高手一起探讨!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值