angular仿支付宝密码框输入效果
发布时间 - 2026-01-11 00:21:24 点击率:次项目需求,使用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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何获取PHP WAP自助建站系统源码?
JavaScript如何实现继承_有哪些常用方法
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Android利用动画实现背景逐渐变暗
微信公众帐号开发教程之图文消息全攻略
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
太平洋网站制作公司,网络用语太平洋是什么意思?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
如何在景安云服务器上绑定域名并配置虚拟主机?
网站制作企业,网站的banner和导航栏是指什么?
如何在建站宝盒中设置产品搜索功能?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
php结合redis实现高并发下的抢购、秒杀功能的实例
公司门户网站制作流程,华为官网怎么做?
Laravel如何处理和验证JSON类型的数据库字段
iOS验证手机号的正则表达式
如何在Windows服务器上快速搭建网站?
大型企业网站制作流程,做网站需要注册公司吗?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
js代码实现下拉菜单【推荐】
,在苏州找工作,上哪个网站比较好?
Laravel如何为API生成Swagger或OpenAPI文档
开心动漫网站制作软件下载,十分开心动画为何停播?
iOS UIView常见属性方法小结
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
独立制作一个网站多少钱,建立网站需要花多少钱?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Laravel如何创建自定义Facades?(详细步骤)
Laravel如何生成URL和重定向?(路由助手函数)
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何快速搭建安全的FTP站点?
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何打造高效商业网站?建站目的决定转化率
JS碰撞运动实现方法详解
利用python获取某年中每个月的第一天和最后一天
,南京靠谱的征婚网站?
如何快速重置建站主机并恢复默认配置?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Python数据仓库与ETL构建实战_Airflow调度流程详解
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?

