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中常用的55个经典技巧
Aug 12 Javascript
单独使用CKFinder选择图片的方法
Aug 21 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
Jan 26 Javascript
Thinkjs3新手入门之添加一个新的页面
Dec 06 Javascript
Vue项目中使用Vux的安装过程
May 01 Javascript
详解webpack4多入口、多页面项目构建案例
May 25 Javascript
详解iframe跨域的几种常用方法(小结)
Apr 29 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
php 接口类与抽象类的实际作用
2009/11/26 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Javascript 中的类和闭包
2010/01/08 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
js 操作符汇总
2014/11/08 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
python 字符串和整数的转换方法
2018/06/25 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
党员实事承诺书
2014/03/26 职场文书
保护动物的标语
2014/06/11 职场文书
作文评语怎么写
2014/12/25 职场文书
初中家长评语大全
2014/12/26 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
贷款担保书范本
2015/09/22 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA