Angular获取手机验证码实现移动端登录注册功能
- 作者: 我来自未来丶希望你懂我
- 来源: 51数据库
- 2021-08-09
之前一直在用jquery来做项目,使用比较熟练,目前公司要求使用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中响应式表单的三种更新值方法详析
7
Angularjs实现下拉框联动的示例代码
7
详解AngularJS跨页面传值(ui-router)
2
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
3
angular2路由切换改变页面title的示例代码
4
Angular2 组件间通过@Input @Output通讯示例
5
Angularjs中ng-repeat的简单实例
3
AngularJS 中ui-view传参的实例详解
4
浅谈Angular路由守卫
4
详解基于Angular4+ server render(服务端渲染)开发教程
4
