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 相关文章推荐
百度留言本js 大家可以参考下
Oct 13 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
Dec 07 Javascript
Js nodeType 属性全面解析
Nov 14 Javascript
javascript日期格式化方法小结
Dec 17 Javascript
AngularJS+Bootstrap实现多文件上传与管理
Nov 08 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
JavaScript类的继承操作实例总结
Dec 20 Javascript
jquery中为什么能用$操作
Jun 18 jQuery
JS实现简易留言板特效
Dec 23 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
Nov 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
优化PHP程序的方法小结
2012/02/23 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
Jupyter加载文件的实现方法
2020/04/14 Python
pycharm实现猜数游戏
2020/12/07 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
专科文秘应届生求职信
2013/11/18 职场文书
模具专业自荐信
2014/05/29 职场文书
小学学校评估方案
2014/06/08 职场文书
社区端午节活动总结
2015/02/11 职场文书
新年晚会开场白
2015/05/29 职场文书
军训后的感想
2015/08/07 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书