angualrjs之注册页面

来源:互联网 发布:网络推广文案典型案例 编辑:程序博客网 时间:2024/06/11 14:20

注册页面逻辑思维

注册页面需要有手机号,密码,确认密码,验证码,获取验证码按钮,提交按钮


点击注册按钮是进行判断信息是否输入,输入的信息是否正确,哪一步的输入有误

首先判断手机号是否输入,输入的格式是否正确(正则表达式) ,输入后判断是否已经注册过 

再判断输入的两次密码是否一致(也可以增加判断输入的密码格式是否有误)

获取验证码,判断验证码是否输入有误


代码

html部分

<form class="form-register zform" name="Form" >  <div class="form-group" ng-class="{'has-error':Form.mobile.$dirty && Form.mobile.$invalid, 'has-success':Form.mobile.$valid}">    <span>手机:</span>    <span class="input-icon">      <input type="text" class="form-control" name="mobile" placeholder="手机" ng-model="user.Mobile"             ng-pattern="/^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/" required>    </span>    <span class="symbol required margin-left-5"></span>  </div>  <div class="form-group" ng-show="exist">    <p class="text-red padding-left-15">该手机号已被注册,请重新输入</p>  </div>  <div class="form-group" ng-class="{'has-error':Form.smsCode.$dirty && Form.smsCode.$invalid, 'has-success':Form.smsCode.$valid}">    <span>验证码:</span>    <span class="input-icon">    <input type="text" class="form-control" name="smsCode" placeholder="手机验证码" ng-model="user.smsCode" required>    </span>    <span class="symbol required margin-left-5"></span>  </div>  <div class="form-group">    <button class="btn btn-primary zgetcode" ng-click="getSmsCode()" ng-disabled="state.indexOf('s') != -1 || disabledSmsCode">      {{slogan}} {{state}}</button>  </div>  <div class="form-group" ng-class="{'has-error':Form.password.$dirty && Form.password.$invalid, 'has-success':Form.password.$valid}">    <span>密码:</span>    <span class="input-icon">      <input type="password" class="form-control" name="password" placeholder="密码" ng-model="user.password" required>      </span>    <span class="symbol required margin-left-5"></span>  </div>  <div class="form-group" ng-class="{'has-error':Form.password_again.$dirty && Form.password_again.$invalid, 'has-success':Form.password_again.$valid}">    <span>确认密码:</span>    <span class="input-icon">      <input type="password" class="form-control" name="password_again" placeholder="确认密码"             ng-model="password_again" required>    </span>    <span class="symbol required margin-left-5"></span>  </div>  <div class="form-group zlogin">    <button ng-disabled="Form.$invalid" class="btn btn-primary" ng-click="signUp()">提交</button>  </div></form>


angularjs部门

//用户注册controller.controller('registerCtrl',function($scope,Account,SweetAlert,$state,$interval){ $scope.user = {};   //用户为空 $scope.exist = false;   //手机号已注册提示显示为false $scope.checkTelephone = function(){  //输入手机号是引发的函数  var pattern = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;  //手机号格式  var stat = pattern.test($scope.user.Mobile);   //定义stat为格式化输出的用户手机号  if(stat && $scope.user.Mobile !== "" && $scope.user.Mobile !== undefined){  //如果手机号格式输入正确调用这个方法   Account.checkTelephone({tel:$scope.user.Mobile},function(data){   //如果满条件,则得到数据    $scope.exist = data.exist;   //提示框       if(data.exist){   //如果手机号已注册显示某些提示隐藏某些提示     $scope.disabledSmsCode = true;               $scope.zsuccess = true;               $scope.zerror = false;    }else{     $scope.disabledSmsCode = false;           $scope.zsuccess = false;           $scope.zerror = true;    }   })  } }; $scope.$watch("user.Mobile",function(){  //$watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你。  if($scope.user.Mobile === "" || $scope.user.Mobile === undefined){   //监听手机号是否输入 如果手机号没有输入   $scope.exist = false;    //显示提示   $scope.disabledSmsCode = true;       $scope.zsuccess = true;       $scope.zerror = false;  }else if($scope.user.Mobile && $scope.user.Mobile.length === 11){   //如果手机号输入并且长度为11位   $scope.checkTelephone();  //输入手机号格式正确 调用函数判断手机号是否注册    }else{   $scope.disabledSmsCode = true;   } }); $scope.signUp = function(){  //提交按钮点击时候发生的事件  if($scope.password_again === $scope.user.password){  //如果密码相同,用户正确,判断是否成功,如果不成功则是验证码输入错误   Account.signUp($scope.user,function(data){   //如果密码相同调用方法    if(data.msg === 'success'){   //如果返回的数据为成功     SweetAlert.swal({   //弹出注册成功提示框      title:'',      text: "注册成功",      type: "success",      showCancelButton: false,      confirmButtonColor: "#DD6B55",      confirmButtonText: "",      cancelButtonText: "",      closeOnConfirm: true,      closeOnCancel: true     },function(isConfirm){    //弹框选择是否   是就登陆      if (isConfirm) {  //如果确认       $state.go('account.login');      }     });    }else{  //如果返回的数据是失败    则就验证码输入有误  因为前面判断了手机是否正确,父级判断了密码是否相同,只有验证码没判断     SweetAlert.swal("","验证码有误","error");    }   });  }else{     //如果两次密码输入不一致,就不调用注册方法 弹框显示密码不一致的提示   SweetAlert.swal("","两次密码不一致,请重新输入","warning");  } }; $scope.state = "获取验证码";    $scope.slogan = "";     //定义一个空的变量 $scope.getSmsCode = function(){    //获取验证码点击时候触发函数  if($scope.user.Mobile){  //如果手机号正确就开始倒计时  并调用方法   var number = 60;     //定义一个变量   $scope.state = number + ' s';   //修改state的值为拼接的字符串   $scope.slogan = "请等待";        //修改值   var timer = $interval(function(){  //$interval间隔  触发函数    if(number === 0){     //判断时间为0秒      $scope.slogan = "";          $scope.state = "重新发送";     $interval.cancel(timer);  //终止计时    }else{     number --;   //进行倒计时  number自减      $scope.state = number + ' s';        }   },1000);  //1秒  每一秒触发一次函数    Account.sendSmsCode({telephone:$scope.user.Mobile},function(data){   //获取验证码的方法    console.log(data);  //在控制台打印返回的数据   })  }else{   //如果手机号输入不正确 则不发生倒计时 获取验证码事件 直接弹框提示   SweetAlert.swal("","请输入手机号码","info");     } }})