国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

angular仿支付寶密碼框輸入效果

2019-11-19 17:02:30
字體:
供稿:網(wǎng)友

項(xiàng)目需求,使用ng寫一個(gè)密碼框格子支付模塊,一開始使用一個(gè)input+letter-spacing來分割字符,但是發(fā)現(xiàn)間距非常不好控制,隨著字符的輸入文本框字符串間距還會自動(dòng)調(diào)整。最終從網(wǎng)上查找到一款jq仿支付寶密碼輸入框,于是我模仿編寫了個(gè)指令模塊。

效果如下:

完整代碼如下:

<!DOCTYPE html> <html> <head lang="en">  <meta charset="UTF-8">  <meta name="viewport"     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">  <meta name="format-detection" content="telephone=no"/>  <title>使用ng仿寫支付寶密碼框</title>  <style>   *{ margin: 0; padding: 0;}   .t{ margin-left: 100px;}   .pass-form{position:relative;top:20px; left: 50px; width:100%;}   .pass-form .pass-input{position:absolute;top:0;height:75px;line-height:75px;font-size:14px;color:#000;opacity:0;box-shadow:none}   .pass-form .pass-border-box{position:absolute;top:0;font-size:0}   .pass-form .pass-border-box .faguang{position:absolute;top:0;left:0;z-index:9;box-shadow:0 0 8px rgba(60,100,100,.6);width:75px;height:75px;background:#fff;opacity:0}   .pass-form .pass-border-box .pass-border{display:inline-block;position:relative;z-index:10;width:75px;height:75px;border:solid 1px #dcdcdc;border-left:none;-webkit-box-sizing:border-box;box-sizing:border-box}   .pass-form .pass-border-box .pass-border:first-child{border-left:solid 1px #dcdcdc}   .pass-form .pass-border-box .pass-border.active{background:url(../img/icons/icon_guangbiao.gif) no-repeat center center #fff}   .pass-form .pass-border-box .pass-border i{display:block;margin:0 auto;margin-top:22px;width:20px;height:20px;border-radius:100%}  </style> </head> <body ng-app="demo" ng-controller="pageCtrl">  <div class="t">ng仿寫支付寶密碼框</div>  <form class="pass-form" name="pass_form" novalidate pass-form>  <label for="pass">   <input class="pass-input Jpass" type="tel" name="pass" id="pass" autocomplete="off" ng-model="pass" required maxlength="6" />    <div class="pass-border-box">    <span class="pass-border"><i>dot</i></span>    <span class="pass-border"><i>dot</i></span>    <span class="pass-border"><i>dot</i></span>    <span class="pass-border"><i>dot</i></span>    <span class="pass-border"><i>dot</i></span>    <span class="pass-border"><i>dot</i></span>    <div class="faguang Jfaguang"></div>   </div>  </label> </form> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> <script>  var app=angular.module('demo', []);  app.controller('pageCtrl', function($scope, $interval, $http, $q){   $scope.pass=''; //  $interval(function(){ //   console.log('定時(shí)檢查:'+$scope.pass); //  }, 5000);  })   .directive('passForm', function($http){    return {     restrict: 'EA',     link: function(scope, ele, attr){      var inputDom=angular.element(ele[0].querySelector('.Jpass'));//密碼框      var spanDoms=ele.find('span');//光標(biāo)span      var faguang=angular.element(ele[0].querySelector('.Jfaguang'));//發(fā)光外框      var that=this;      inputDom.on('focus blur keyup', function(e){       e=e? e : window.event;       e.stopPropagation();        console.log('value len:'+this.value.length);       console.log(e.type);       if(e.type==='focus'){        var _currFocusInputLen=this.value.length===6? 5 : this.value.length;        spanDoms.eq(_currFocusInputLen).addClass('active');        faguang.css({left: _currFocusInputLen * 75+'px', opacity: 1});       }else if(e.type==='blur'){        var _currBlurInputLen = this.value.length;        spanDoms.eq(_currBlurInputLen).removeClass('active');        faguang.css({opacity: 0});       }else if(e.type==='keyup'){        //console.log(this.value);        //鍵盤上的數(shù)字鍵按下才可以輸入        if(e.keyCode == 8 || (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)){         var curInputLen = this.value.length;//輸入的文本內(nèi)容長度         for (var j = 0; j < 6; j++) {          spanDoms.eq(j).removeClass('active');          spanDoms.eq(curInputLen).addClass('active');          spanDoms.eq(curInputLen - 1).next().find('i').css({backgroundColor: 'transparent'});          spanDoms.eq(curInputLen - 1).find('i').css({backgroundColor: '#000'});          faguang.css({           left: curInputLen * 75 + 'px'          });         }         if (curInputLen === 0) {          spanDoms.find('i').css({backgroundColor: 'transparent'});         }         if (curInputLen === 6) {          spanDoms.eq(5).addClass('active');          faguang.css({           left: '375px'          });          //直接發(fā)起密碼驗(yàn)證          var doSubmitCallback=function(){           scope.pass='';           spanDoms.find('i').css({backgroundColor: 'transparent'});           spanDoms.removeClass('active').eq(0).addClass('active');           faguang.css({            left: '0'           });          }; //         $http.get('http://xxxx/test.php?pass='+this.value) //          .success(function(res){ //           console.log(res); //           if(res.status){ //            doSubmitCallback(); //            console.log(that.value+'-----'); //           }else{ //            doSubmitCallback();  //           } //          });         }        }else{         this.value = this.value.replace(//D/g,'');        }        }      });     }    }   }); </script> </body> </html> 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萨嘎县| 原阳县| 平顶山市| 凤翔县| 甘谷县| 镇江市| 深州市| 林周县| 精河县| 梧州市| 沁水县| 利津县| 望谟县| 定陶县| 富平县| 竹溪县| 泉州市| 依兰县| 黎城县| 酒泉市| 荆州市| 蒲城县| 东光县| 江西省| 易门县| 苏尼特左旗| 宝坻区| 汤原县| 奉节县| 苍山县| 灌南县| 乐至县| 西畴县| 英山县| 马龙县| 新民市| 建德市| 木里| 明溪县| 华蓥市| 太仆寺旗|