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 相关文章推荐
jQuery技巧总结
Jan 01 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
jquery中ready()函数执行的时机和window的load事件比较
Jun 22 Javascript
JavaScript动态设置div的样式的方法
Dec 26 Javascript
JavaScript小技巧整理
Dec 30 Javascript
全面理解闭包机制
Jul 11 Javascript
React组件的三种写法总结
Jan 12 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
Mar 09 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
小程序实现单选多选功能
Nov 04 Javascript
Cordova(ionic)项目实现双击返回键退出应用
Sep 17 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 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
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
js 单引号 传递方法
2009/06/22 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
使用python+whoosh实现全文检索
2019/12/09 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
计算机大学生的自我评价
2013/10/15 职场文书
学校安全教育制度
2014/01/31 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
购房委托书范本
2014/09/18 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
党员承诺书范文2015
2015/04/27 职场文书
家长会主持词开场白
2015/05/29 职场文书
单位工资证明范本
2015/06/12 职场文书
格林童话读书笔记
2015/06/30 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python