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 相关文章推荐
用jscript实现列出安装的软件列表
Jun 18 Javascript
JavaScript 字符串连接性能优化
Dec 20 Javascript
javascript 模拟点击广告
Jan 02 Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
微信小程序 slider 详解及实例代码
Jan 10 Javascript
AngularJS路由实现页面跳转实例
Mar 03 Javascript
js实现不提示直接关闭网页窗口
Mar 30 Javascript
Angularjs的键盘事件的绑定
Jul 27 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
Dec 05 Javascript
jQuery 实现扁平式小清新导航
Jul 07 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
一篇入门的php Class 文章
2007/04/04 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
php英文单词统计器
2016/06/23 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
package.json文件配置详解
2017/06/15 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
python对数组进行反转的方法
2015/05/20 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
12岁生日感言
2014/01/21 职场文书
食品工程专业求职信
2014/06/15 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
导游词之神仙居景区
2019/11/15 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
世界十大狙击步枪排行榜
2022/03/20 杂记
Vue深入理解插槽slot的使用
2022/08/05 Vue.js