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学习笔记记录我的旅程
May 23 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
Feb 06 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
Jun 20 Javascript
jQuery带时间的日期控件代码分享
Aug 26 Javascript
jQuery对象与DOM对象转换方法详解
May 10 Javascript
Node.js的npm包管理器基础使用教程
May 26 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
Dec 26 Javascript
vue自动路由-单页面项目(非build时构建)
Apr 30 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 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打开文件fopen函数的使用说明
2013/07/05 PHP
一个PHP二维数组排序的函数分享
2014/01/17 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
jQuery实现购物车的总价计算和总价传值功能
2018/11/28 jQuery
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
Python常用正则表达式符号浅析
2014/08/13 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
Python序列类型的打包和解包实例
2019/12/21 Python
如何把python项目部署到linux服务器
2020/08/26 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
数控技术专科生自我评价
2014/01/08 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
职工培训工作总结
2015/08/10 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python