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表单提交的代码
Sep 13 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
js限制文本框只能输入数字方法小结
Jun 16 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
Apr 30 Javascript
JQuery自适应窗口大小导航菜单附源码下载
Sep 01 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
vue2里面ref的具体使用方法
Oct 27 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
深入分析JavaScript 事件循环(Event Loop)
Jun 19 Javascript
vscode中使用npm安装babel的方法
Aug 02 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 GUID生成函数和类
2014/03/10 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
理解Python中的With语句
2015/02/02 Python
python输出指定月份日历的方法
2015/04/23 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python写日志文件操作类与应用示例
2019/07/01 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python 元组操作总结
2019/09/18 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
如何理解委托
2012/01/06 面试题
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
园林系毕业生求职信
2014/06/23 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
高考升学宴答谢词
2015/01/20 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
python对文档中元素删除,替换操作
2022/04/02 Python