Angular獲取手機(jī)驗(yàn)證碼實(shí)現(xiàn)移動(dòng)端登錄注冊(cè)功能
之前一直在用jQuery來(lái)做項(xiàng)目,使用比較熟練,目前公司要求使用angular來(lái)做項(xiàng)目,遇到一個(gè)登錄模塊如下所示,功能有兩個(gè)方面,一個(gè)是點(diǎn)擊按鈕獲取驗(yàn)證碼,一個(gè)是點(diǎn)擊登錄驗(yàn)證表單。從用戶(hù)體驗(yàn)角度來(lái)考慮有兩個(gè)要注意的地方,默認(rèn)兩個(gè)按鈕應(yīng)該都是不可點(diǎn)擊的,輸入正確的手機(jī)號(hào)時(shí)驗(yàn)證碼的按鈕可點(diǎn)擊,當(dāng)再輸入驗(yàn)證碼時(shí)登錄按鈕可點(diǎn)擊。
代碼結(jié)構(gòu)如下:
<form name="loginForm" ng-controller="loginCtrl" ng-submit="submitForm(loginForm.$valid)" novalidate>
<div class="inputItem">
<input type="number" name="phoneNum" placeholder="手機(jī)號(hào)" ng-model="userPhone" ng-pattern="/^1[3|4|5|7|8]\d{9}$/" required/>
</div>
<div class="inputItem">
<input type="number" name="phoneCode" placeholder="短信驗(yàn)證碼" 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">驗(yàn)證碼不正確</div>
</div>
<button type="submit" class="button02" ng-disabled="loginForm.$invalid">登 錄</button>
</form>
之前寫(xiě)的一版沒(méi)有對(duì)獲取驗(yàn)證碼按鈕進(jìn)行驗(yàn)證,后來(lái)修改了一下,驗(yàn)證碼的按鈕要在手機(jī)號(hào)輸入正確時(shí)顯示可點(diǎn)擊,但是angular沒(méi)有onInput這個(gè)方法,為了方便,寫(xiě)了兩個(gè)按鈕來(lái)實(shí)現(xiàn)這個(gè)效果。
樣式如下:
.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;
}
接下來(lái)就是比較重要的AngularJS代碼了:
angular.module('loginModule',[]).controller('loginCtrl',['$scope','$interval',function($scope,$interval){
//獲取驗(yàn)證碼
$scope.paracont = '獲取驗(yàn)證碼';
$scope.paraclass = 'button01';
$scope.errorHint = false;
$scope.paraevent = true;
$scope.loginCode = function(){
if($scope.paraevent){
var second = 59;
$scope.paracont = second + '秒后重發(fā)';
$scope.paraclass = 'null button01';
var timer = $interval(function(){
if(second <=0){
$interval.cancel(timer);
$scope.paracont = '重發(fā)驗(yàn)證碼';
second = 59;
$scope.paraclass = 'button01';
$scope.paraevent = true;
}else{
second--;
$scope.paracont = second + '秒后重發(fā)';
$scope.paraevent = false;
}
},1000);
}
}
//提交
$scope.submitForm = function(isValid){
if(isValid){
alert("success!");
}
}
}])
最終寫(xiě)出來(lái)的效果就是下面這個(gè)樣子了。

以上所述是小編給大家介紹的Angular獲取手機(jī)驗(yàn)證碼實(shí)現(xiàn)移動(dòng)端登錄注冊(cè)功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
AngularJS實(shí)現(xiàn)標(biāo)簽頁(yè)的兩種方式
這篇文章分別給大家介紹了AngularJS實(shí)現(xiàn)標(biāo)簽頁(yè)的兩種方式,一種是通過(guò)普通指令實(shí)現(xiàn)標(biāo)簽頁(yè),另外一種是通過(guò)自定義指令實(shí)現(xiàn)的標(biāo)簽頁(yè),有需要的朋友們可以來(lái)參考借鑒,下面來(lái)一起看看吧。2016-09-09
AngularJS實(shí)現(xiàn)的生成隨機(jī)數(shù)與猜數(shù)字大小功能示例
這篇文章主要介紹了AngularJS實(shí)現(xiàn)的生成隨機(jī)數(shù)與猜數(shù)字大小功能,結(jié)合完整實(shí)例形式分析了AngularJS隨機(jī)數(shù)生成與數(shù)值判定相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
Angular.js項(xiàng)目中使用gulp實(shí)現(xiàn)自動(dòng)化構(gòu)建以及壓縮打包詳解
基于流的前端自動(dòng)化構(gòu)建工具,利用gulp可以提高前端開(kāi)發(fā)效率,特別是在前后端分離的項(xiàng)目中。下面這篇文章主要給大家介紹了關(guān)于在Angular.js項(xiàng)目中使用gulp實(shí)現(xiàn)自動(dòng)化構(gòu)建以及壓縮打包的相關(guān)資料,需要的朋友可以參考下。2017-07-07
AngularJS實(shí)現(xiàn)動(dòng)態(tài)添加Option的方法
這篇文章主要介紹了AngularJS實(shí)現(xiàn)動(dòng)態(tài)添加Option的方法,涉及AngularJS事件響應(yīng)及頁(yè)面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例
AngularJS實(shí)現(xiàn)的簡(jiǎn)單拖拽功能示例

