全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

angular仿支付宝密码框输入效果

项目需求,使用ng写一个密码框格子支付模块,一开始使用一个input+letter-spacing来分割字符,但是发现间距非常不好控制,随着字符的输入文本框字符串间距还会自动调整。最终从网上查找到一款jq仿支付宝密码输入框,于是我模仿编写了个指令模块。

效果如下:

完整代码如下:

<!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('定时检查:'+$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');//光标span 
     var faguang=angular.element(ele[0].querySelector('.Jfaguang'));//发光外框 
     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); 
       //键盘上的数字键按下才可以输入 
       if(e.keyCode == 8 || (e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)){ 
        var curInputLen = this.value.length;//输入的文本内容长度 
        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' 
         }); 
         //直接发起密码验证 
         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> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angular仿支付宝密码框  # js仿支付宝密码输入框  # angularjs2 ng2 密码隐藏显示的实例代码  # Angularjs修改密码的实例代码  # AngularJS前端页面操作之用户修改密码功能示例  # 在 Angular2 中实现自定义校验指令(确认密码)的方法  # AngularJs验证重复密码的方法(两种)  # angularjs 表单密码验证自定义指令实现代码  # Angular实现点击按钮控制隐藏和显示功能示例  # Angular实现点击按钮后在上方显示输入内容的方法  # AngularJS实现根据不同条件显示不同控件  # AngularJS实时获取并显示密码的方法  # 支付宝  # 仿写  # 还会  # 才可以  # 写了  # 按下  # 大家多多  # 文本框  # 输入框  # 数字键  # 网上  # font  # shadow  # border  # size  # color  # box  # opacity  # relative  # top 


相关文章: 如何零基础在云服务器搭建WordPress站点?  平台云上自主建站:模板化设计与智能工具打造高效网站  如何获取开源自助建站系统免费下载链接?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  网站好制作吗知乎,网站开发好学吗?有什么技巧?  韩国服务器如何优化跨境访问实现高效连接?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  装修招标网站设计制作流程,装修招标流程?  已有域名和空间,如何快速搭建网站?  网站代码制作软件有哪些,如何生成自己网站的代码?  网站微信制作软件,如何制作微信链接?  黑客如何通过漏洞一步步攻陷网站服务器?  如何有效防御Web建站篡改攻击?  如何选择服务器才能高效搭建专属网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何自定义建站之星网站的导航菜单样式?  建站之星logo尺寸如何设置最合适?  如何快速搭建高效可靠的建站解决方案?  如何通过免费商城建站系统源码自定义网站主题与功能?  建站之星如何通过成品分离优化网站效率?  如何通过wdcp面板快速创建网站?  建站之星后台密码如何安全设置与找回?  兔展官网 在线制作,怎样制作微信请帖?  中山网站推广排名,中山信息港登录入口?  微信小程序 五星评分(包括半颗星评分)实例代码  香港服务器部署网站为何提示未备案?  网站制作免费,什么网站能看正片电影?  建站之星24小时客服电话如何获取?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  黑客如何利用漏洞与弱口令入侵网站服务器?  内部网站制作流程,如何建立公司内部网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何用美橙互联一键搭建多站合一网站?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  深圳网站制作的公司有哪些,dido官方网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何确保西部建站助手FTP传输的安全性?  广州商城建站系统开发成本与周期如何控制?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何选择最佳自助建站系统?快速指南解析优劣  阿里云网站制作公司,阿里云快速搭建网站好用吗?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  建站168自助建站系统:快速模板定制与SEO优化指南  建站VPS推荐:2025年高性能服务器配置指南  如何在沈阳梯子盘古建站优化SEO排名与功能模块? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。