Angular獲取手機(jī)驗(yàn)證碼實(shí)現(xiàn)移動端登錄注冊功能
之前一直在用jQuery來做項(xiàng)目,使用比較熟練,目前公司要求使用angular來做項(xiàng)目,遇到一個(gè)登錄模塊如下所示,功能有兩個(gè)方面,一個(gè)是點(diǎn)擊按鈕獲取驗(yàn)證碼,一個(gè)是點(diǎn)擊登錄驗(yàn)證表單。從用戶體驗(yàn)角度來考慮有兩個(gè)要注意的地方,默認(rèn)兩個(gè)按鈕應(yīng)該都是不可點(diǎn)擊的,輸入正確的手機(jī)號時(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ī)號" 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>
之前寫的一版沒有對獲取驗(yàn)證碼按鈕進(jìn)行驗(yàn)證,后來修改了一下,驗(yàn)證碼的按鈕要在手機(jī)號輸入正確時(shí)顯示可點(diǎn)擊,但是angular沒有onInput這個(gè)方法,為了方便,寫了兩個(gè)按鈕來實(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;
}
接下來就是比較重要的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!");
}
}
}])
最終寫出來的效果就是下面這個(gè)樣子了。

以上所述是小編給大家介紹的Angular獲取手機(jī)驗(yàn)證碼實(shí)現(xiàn)移動端登錄注冊功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
angularjs2中父子組件的數(shù)據(jù)傳遞的實(shí)例代碼
本篇文章主要介紹了angularjs2中父子組件的數(shù)據(jù)傳遞的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
詳解用webpack2搭建angular2的項(xiàng)目
本篇文章主要介紹了詳解用webpack2搭建angular2的項(xiàng)目 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Angularjs實(shí)現(xiàn)控制器之間通信方式實(shí)例總結(jié)
這篇文章主要介紹了Angularjs實(shí)現(xiàn)控制器之間通信方式,結(jié)合實(shí)例形式總結(jié)分析了AngularJS控制器常用通信方式及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-03-03
AngualrJS中的Directive制作一個(gè)菜單
本文給大家介紹AngualrJS中的Directive制作一個(gè)菜單,涉及到angularjs directive相關(guān)知識,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,特此分享供大家學(xué)習(xí)2016-01-01
Angular-UI Bootstrap組件實(shí)現(xiàn)警報(bào)功能
這篇文章主要介紹了Angular-UI Bootstrap組件實(shí)現(xiàn)警報(bào)功能,對Angular.js services的學(xué)習(xí)有所幫助,需要的朋友可以參考下2018-07-07
AngularJS點(diǎn)擊添加樣式、點(diǎn)擊變色設(shè)置的實(shí)例代碼
本篇文章主要介紹了AngularJS點(diǎn)擊添加樣式、點(diǎn)擊變色設(shè)置的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
后端接收不到AngularJs中$http.post發(fā)送的數(shù)據(jù)原因分析及解決辦法
這篇文章主要介紹了后端接收不到AngularJs中$http.post發(fā)送的數(shù)據(jù)原因分析及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-07-07

