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实现动态添加删除Table行示例
Apr 14 Javascript
angularJS提交表单(form)
Feb 09 Javascript
基于JavaScript代码实现微信扫一扫下载APP
Dec 30 Javascript
浅析JS动态创建元素【两种方法】
Apr 20 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
详解JavaScript节流函数中的Throttle
Jul 16 Javascript
js实现百度搜索提示框
Feb 05 Javascript
利用Ionic2 + angular4实现一个地区选择组件
Jul 27 Javascript
react路由配置方式详解
Aug 07 Javascript
r.js来合并压缩css文件的示例
Apr 26 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
May 06 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相当简单的分页类
2008/10/02 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python实现Dijkstra算法
2018/10/17 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
如何理解python面向对象编程
2020/06/01 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
应届毕业生自我评价分享
2013/12/15 职场文书
党支部先进事迹材料
2014/12/24 职场文书
浅析Django接口版本控制
2021/06/26 Python
基于angular实现树形二级表格
2021/10/16 Javascript
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python