Angular获取手机验证码实现移动端登录注册功能


Posted in Javascript onMay 17, 2017

之前一直在用jQuery来做项目,使用比较熟练,目前公司要求使用angular来做项目,遇到一个登录模块如下所示,功能有两个方面,一个是点击按钮获取验证码,一个是点击登录验证表单。从用户体验角度来考虑有两个要注意的地方,默认两个按钮应该都是不可点击的,输入正确的手机号时验证码的按钮可点击,当再输入验证码时登录按钮可点击。

Angular获取手机验证码实现移动端登录注册功能 

代码结构如下:

<form name="loginForm" ng-controller="loginCtrl" ng-submit="submitForm(loginForm.$valid)" novalidate>
  <div class="inputItem">
    <input type="number" name="phoneNum" placeholder="手机号" ng-model="userPhone" ng-pattern="/^1[3|4|5|7|8]\d{9}$/" required/>
  </div>
  <div class="inputItem">
    <input type="number" name="phoneCode" placeholder="短信验证码" ng-model="userPhoneCode" ng-focus="errorHint=ture" required/>
    <div class="button01 null" ng-if="loginForm.phoneNum.$invalid">{{paracont}}</div>
    <div ng-class="paraclass" ng-click="loginCode()" ng-if="loginForm.phoneNum.$valid">{{paracont}}</div>
    <div class="errorHint fontred" ng-if="errorHint">验证码不正确</div>
  </div>
  <button type="submit" class="button02" ng-disabled="loginForm.$invalid">登 录</button>
</form>

之前写的一版没有对获取验证码按钮进行验证,后来修改了一下,验证码的按钮要在手机号输入正确时显示可点击,但是angular没有onInput这个方法,为了方便,写了两个按钮来实现这个效果。

样式如下:

.inputItem{
  width:6.4rem;
  height:0.9rem;
  margin:0 auto;
  border:1px solid #ccc;
  background:#fff;
}
.inputItem:first-child{
  border-bottom:none;
}
.inputItem input{
  padding:0.1rem 0;
  margin:0.2rem;
  width:3.7rem;
}
.button01{
  width:2rem;
  height:0.7rem;
  border:1px solid #ccc;
  text-align: center;
  line-height:0.7rem;
  font-size:0.26rem;
  float:right;
  margin:0.1rem 0.2rem 0 0;
  box-sizing:border-box;
}
.button01.null{
  color:#999;
}
.fontred{
  color:#red;
}
.button02{
  display:block;
  width:6.4rem;
  height:0.9rem;
  text-align: center;
  line-height:0.9rem;
  border:1px solid #ccc;
  margin:0.8rem auto 0;
  background:#fff; 
}
.errotHint{
  line-height:0.6rem;
  font-size:0.24rem;
  padding-left:0.2rem;
  }

接下来就是比较重要的AngularJS代码了:

angular.module('loginModule',[]).controller('loginCtrl',['$scope','$interval',function($scope,$interval){
  //获取验证码
  $scope.paracont = '获取验证码';
  $scope.paraclass = 'button01';
  $scope.errorHint = false;
  $scope.paraevent = true;
  $scope.loginCode = function(){
    if($scope.paraevent){
      var second = 59;
      $scope.paracont = second + '秒后重发';
      $scope.paraclass = 'null button01';
      var timer = $interval(function(){
        if(second <=0){
          $interval.cancel(timer);
          $scope.paracont = '重发验证码';
          second = 59;
          $scope.paraclass = 'button01';
          $scope.paraevent = true;
        }else{
          second--;
          $scope.paracont = second + '秒后重发';
          $scope.paraevent = false;
        }        
      },1000);
    }
  }
  //提交
  $scope.submitForm = function(isValid){
    if(isValid){
      alert("success!");   
    }
  }  
}])

最终写出来的效果就是下面这个样子了。

Angular获取手机验证码实现移动端登录注册功能

以上所述是小编给大家介绍的Angular获取手机验证码实现移动端登录注册功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
看了就知道什么是JSON
Dec 09 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
Jun 08 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
Sep 24 Javascript
javascript中定义类的方法汇总
Dec 28 Javascript
jQuery中end()方法用法实例
Jan 08 Javascript
JavaScript中的Promise使用详解
Jun 24 Javascript
JS实现自定义简单网页软键盘效果代码
Nov 05 Javascript
获取阴历(农历)和当前日期的js代码
Feb 15 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 Javascript
vue中本地静态图片路径写法
Mar 06 Javascript
使用Angular CLI从蓝本生成代码详解
Mar 24 Javascript
浅谈一个webpack构建速度优化误区
Jun 24 Javascript
原生JS实现层叠轮播图
May 17 #Javascript
JavaScript手风琴页面制作
May 17 #Javascript
jQuery查找dom的几种方法效率详解
May 17 #jQuery
bootstrap的工具提示实例代码
May 17 #Javascript
js字符串与Unicode编码互相转换
May 17 #Javascript
JavaScript实现省市县三级级联特效
May 16 #Javascript
原生js简单实现放大镜特效
May 16 #Javascript
You might like
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
软件工程专业推荐信
2013/10/28 职场文书
大四学年自我鉴定
2013/11/13 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
详解MySQL 联合查询优化机制
2021/05/10 MySQL
解析目标检测之IoU
2021/06/26 Python
详解Python中*args和**kwargs的使用
2022/04/07 Python