之前一直在用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获取手机验证码实现移动端登录注册功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# angularjs
# 获取验证码
# 验证码
# Ionic+AngularJS实现登录和注册带验证功能
# ionic+AngularJs实现获取验证码倒计时按钮
# 使用jQuery
# Angular实现登录界面验证码详解
# AngularJS 验证码60秒倒计时功能的实现
# Ionic + Angular.js实现验证码倒计时功能的方法
# 重发
# 来做
# 小编
# 都是
# 有两个
# 在此
# 要在
# 要注意
# 给大家
# 写了
# 所示
# 表单
# 来实现
# 不正确
# 所述
# 给我留言
# 感谢大家
# 疑问请
# 有任何
相关文章:
潮流网站制作头像软件下载,适合母子的网名有哪些?
网站制作公司排行榜,抖音怎样做个人官方网站
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何快速搭建高效可靠的建站解决方案?
建站上市公司网站建设方案与SEO优化服务定制指南
在线制作视频网站免费,都有哪些好的动漫网站?
如何选择靠谱的建站公司加盟品牌?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何快速完成中国万网建站详细流程?
如何选择高效响应式自助建站源码系统?
,如何利用word制作宣传手册?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
,在苏州找工作,上哪个网站比较好?
如何在万网ECS上快速搭建专属网站?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何快速生成专业多端适配建站电话?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何用美橙互联一键搭建多站合一网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何快速搭建高效服务器建站系统?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
C#怎么创建控制台应用 C# Console App项目创建方法
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
定制建站策划方案_专业建站与网站建设方案一站式指南
大连 网站制作,大连天途有线官网?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
建站之星代理平台如何选择最佳方案?
如何确认建站备案号应放置的具体位置?
如何实现建站之星域名转发设置?
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何高效完成独享虚拟主机建站?
三星网站视频制作教程下载,三星w23网页如何全屏?
香港服务器WordPress建站指南:SEO优化与高效部署策略
微信推文制作网站有哪些,怎么做微信推文,急?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
零基础网站服务器架设实战:轻量应用与域名解析配置指南
郑州企业网站制作公司,郑州招聘网站有哪些?
建站之星安装需要哪些步骤及注意事项?
建站之星如何取消后台验证码生成?
深圳网站制作案例,网页的相关名词有哪些?
小型网站制作HTML,*游戏网站怎么搭建?
*请认真填写需求信息,我们会在24小时内与您取得联系。