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 mobile changepage的三种传参方法介绍
Sep 13 Javascript
JS正则表达式验证数字代码
Jan 28 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
AngularJS上拉加载问题解决方法
May 23 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
May 26 Javascript
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
微信小程序表单验证form提交错误提示效果
Jun 19 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
vue 开发企业微信整合案例分析
Dec 02 Javascript
jquery实现简易验证插件封装
Sep 13 jQuery
原生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
打造计数器DIY三步曲(中)
2006/10/09 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
fgetcvs在linux的问题
2012/01/15 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
用Python实现一个简单的线程池
2015/04/07 Python
使用Python编写vim插件的简单示例
2015/04/17 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
pycharm新建一个python工程步骤
2019/07/16 Python
python如何把字符串类型list转换成list
2020/02/18 Python
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
2016新年慰问信范文
2015/03/25 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript