js 实现序列号效果实现
前端的朋友可能遇到过这样的需求,要求在页面输入一串序列号,或激活码(就像在PC正版软件中的序列号),可是HTML中并没有为我们提供类似的组件,我们来自己实现一个:
大体的思路是在表单里有一个隐藏的input,而表面上用一组input代替:
<form name="" action="" method="post">
<p>
<label>请输入激活码:</label>
<span class="act-code-group">
<input id="act-code-item-1" name="act-code-item-1" class="act-code-item" type="text" /> -
<input name="act-code-item-2" class="act-code-item" type="text" /> -
<input name="act-code-item-3" class="act-code-item" type="text" /> -
<input name="act-code-item-4" class="act-code-item" type="text" />
</span>
<input class="act-code-hidden" type="hidden" value="" />
</p>
至于式样上的东西就留给大家,自己发挥吧!
然后我们来处理一下相关逻辑:
function initActCodeGroup(dom){
var $ = jQuery;
var actCodeGroup = dom,
actCodeItem = actCodeGroup.find('.act-code-item');
var ctrlPress = false;
//actCodeItem.attr('maxlength', '5');
actCodeItem.keyup(function(e){
var oldVal = $(this).val();
if(e.keyCode === 8){
// backspace
if(oldVal.length <= 0){
$(this).prev().focus();
}
}else if(e.keyCode === 86 && ctrlPress){
//ctrl + v
var parseTxt = $(this).val(),
parseTxtLen = parseTxt.length;
ctrlPress = false;
var actCodes = [];
if(parseTxt.indexOf('-') >= 0){
actCodes = parseTxt.split('-');
}else{
if(parseTxtLen >= 4){
actCodes.push(parseTxt.substr(0, 4));
}else{
actCodes.push(parseTxt.substr(0, parseTxtLen));
}
if(parseTxtLen >= 8){
actCodes.push(parseTxt.substr(4, 4));
}else{
actCodes.push(parseTxt.substr(4, parseTxtLen-4));
}
if(parseTxtLen >= 12){
actCodes.push(parseTxt.substr(8, 4));
}else{
actCodes.push(parseTxt.substr(8, parseTxtLen-8));
}
if(parseTxtLen >= 16){
actCodes.push(parseTxt.substr(12, 4));
}else{
actCodes.push(parseTxt.substr(12, parseTxtLen-12));
}
}
if(actCodes.length > 1){
var curInput = $(this);
$.each(actCodes, function(i, v){
if(curInput && v.length <= 4){
curInput.val(v);
curInput = curInput.next();
}else{
return false;
}
});
}
}else if(e.keyCode === 17){
setTimeout(function(){
ctrlPress = false;
}, 1000);
}else{
if(oldVal.length >= 4){
$(this).val(oldVal.substr(0,4));
if($(this).next().length > 0){
$(this).next().focus();
}
}
}
}).keydown(function(e){
if(e.keyCode === 17){
ctrlPress = true;
}
});
}
这样就实现了4*4的序列号组件,接下来调用这个初始化函数就好了
$(document).ready(function(){
initActCodeGroup($('.act-code-group'));
});
打开浏览器看看我们的序列号组件吧!
js 实现序列号效果实现的更多相关文章
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- 用js实现动画效果核心方式
为了做好导航菜单,有时候需要在菜单下拉的时候实现动画效果,所以这几天就研究了研究如何用js实现动画效果,实现动画核心要用到两个函数,一个是setTimeOut,另一个是setInterval. 下边我 ...
- js拖拽效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 原生JS实现分页效果2.0(新增了上一页和下一页,添加当前元素样式)
虽然写的很烂,但至少全部都是自己写的,因为这个没有固定的顺序,所以就没有封装,如果你技术好的话,可以你写的分享给我,谢谢. <!DOCTYPE html><html lang=&qu ...
- 原生JS实现分页效果1.0
不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en">&l ...
- 使用JS实现手风琴效果
想要实现简单的手风琴切换效果,需要使用JS实现,如下是使用javascript源码实现,后续会更新使用jQuery实现. 1. 先进行简单的布局:我们可以再ul下添加几个li实现html的简单布局,再 ...
- js弹窗登录效果(源码)--web前端
1.JS弹窗登录效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- 原生JS实现弹幕效果
纯属无聊写的,可能有很多问题,欢迎批评指教. 效果图:图一是预设的一些弹幕,图二是自己发射的弹幕,效果是一样的. 首先是弹幕的位置,是要从最右滑到最左,为了防止随机高度弹幕会覆盖的问题,设置了通道 ...
- JS添加标签效果
JS添加标签效果 在豆瓣网上添加自己的标签是一种常见的效果,今天也就做了一个简单的demo.由于时间的问题 我不多原理,大家可以试着操作几遍就能明白其中的原理了. JSFiddle的效果如下: 点击我 ...
随机推荐
- Charles抓包使用总结
一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 二.Charles ...
- python 缺失值的向前填充
method='bfill'可实现按下方值填充
- [转]js 判断图片存在
转自:http://blog.csdn.net/qq415734794/article/details/7261479 .//检查图片是否存在 .function CheckImgExists(img ...
- php防止重复提交问题总结
用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题.我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交. 1.使用客户端脚本 提 ...
- HttpClient4.x工具获取如何使用
HttpClient4.x工具可以让我们输入url,就可以请求某个页面(个人感觉挺实用的,特别是封装在代码中) 首先我们需要在maven工程中添加依赖 <dependency> ...
- IT相关术语、缩略词
CLI Command Line Interface 命令行界面 GUI Graphical User Interface 图形用户界面 IP Internet Protocol 因特网协议 JDK ...
- PHP中函数的定义与使用
函数是什么? 函数是一个被命名的.独立的代码段,它执行特定的任务,并可能给调用它的程序返回一个值. 函数是被命名的,每个函数都有唯一的名称. 函数是独立的,无需程序其他部分干预,函数便能执行自己的任务 ...
- Python的历史与基本知识入门
一.Python简介 1.1989年由"龟叔"Guido van Rossum在圣诞节期间打发无聊时间编写. 2.Python是一门弱类型解释性语言. 3.优点:代码简洁,明确,优 ...
- 洛谷P3372 【模板】线段树 1(树状数组)
题意 题目链接 Sol Get到了这题树状数组的做法,感觉非常nice 区间加:直接差分 区间求和:考虑每一位的贡献 \(sum_{i = 1}^x (x+1 - i) d_i\) \(= sum_{ ...
- SEO搜索引擎
搜索引擎 搜索引擎(Search Engine)是指根据一定的策略.运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.搜索引擎 ...