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 相关文章推荐
简短几句 通俗解释javascript的闭包
Jan 17 Javascript
fmt:formatDate的输出格式详解
Jan 09 Javascript
关于javascript模块加载技术的一些思考
Nov 28 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
学习Node.js模块机制
Oct 17 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
jQuery插件之validation插件
Mar 29 jQuery
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
Vue实现数据请求拦截
Oct 23 Javascript
Vue清除定时器setInterval优化方案分享
Jul 21 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
基于empty函数的输出详解
2013/06/17 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
浅谈React高阶组件
2018/03/28 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
vue实现分页栏效果
2019/06/28 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
打架检讨书2000字
2014/02/22 职场文书
大学校务公开实施方案
2014/03/31 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
行政处罚告知书
2015/07/01 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python