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 相关文章推荐
JQUERY 浏览器判断实现函数
Aug 20 Javascript
js removeChild 障眼法 可能出现的错误
Oct 06 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
js采用map取到id集合组并且实现点击一行选中一行
Dec 16 Javascript
跟我学习javascript的循环
Nov 18 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
jQuery中slidedown与slideup方法用法示例
Sep 16 Javascript
Vue实现点击后文字变色切换方法
Feb 11 Javascript
Vue加载组件、动态加载组件的几种方式
Aug 31 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
Sep 25 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
原生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+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
微信小程序实现聊天室
2020/08/21 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
python web基础之加载静态文件实例
2018/03/20 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
小学运动会入场式解说词
2014/02/18 职场文书
通用自荐信范文
2014/03/14 职场文书
关于保护环境的建议书
2014/05/13 职场文书
2015年安全月活动总结
2015/03/26 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
幼师辞职信范文大全
2015/05/12 职场文书