js 实现序列号效果实现

前端的朋友可能遇到过这样的需求,要求在页面输入一串序列号,或激活码(就像在PC正版软件中的序列号),可是HTML中并没有为我们提供类似的组件,我们来自己实现一个:

大体的思路是在表单里有一个隐藏的input,而表面上用一组input代替:

 1 <form name="" action="" method="post">
 2 <p>
 3 <label>请输入激活码:</label>
 4 <span class="act-code-group">
 5     <input id="act-code-item-1" name="act-code-item-1" class="act-code-item" type="text" /> -
 6     <input name="act-code-item-2" class="act-code-item" type="text" /> -
 7     <input name="act-code-item-3" class="act-code-item" type="text" /> -
 8     <input name="act-code-item-4" class="act-code-item" type="text" />
 9 </span>
10     <input class="act-code-hidden" type="hidden" value="" />
11 </p>

至于式样上的东西就留给大家,自己发挥吧!

然后我们来处理一下相关逻辑:

 1 function initActCodeGroup(dom){
 2     var actCodeGroup = dom,
 3         actCodeItem = actCodeGroup.find(‘.act-code-item‘);
 4     var ctrlPress = false;
 5     //actCodeItem.attr(‘maxlength‘, ‘5‘);
 6     actCodeItem.keyup(function(e){
 7         var oldVal = $(this).val();
 8         if(e.keyCode === 8){
 9             // backspace
10             if(oldVal.length <= 0){
11                 $(this).prev().focus();
12             }
13         }else if(e.keyCode === 86 && ctrlPress){
14             //ctrl + v
15             var parseTxt = $(this).val(),
16                 parseTxtLen = parseTxt.length;
17
18             ctrlPress = false;
19
20             var actCodes = [];
21             if(parseTxt.indexOf(‘-‘) >= 0){
22                 actCodes = parseTxt.split(‘-‘);
23             }else{
24                 if(parseTxtLen >= 4){actCodes.push(parseTxt.substr(0, 4));}
25                 if(parseTxtLen >= 8){actCodes.push(parseTxt.substr(4, 4));}
26                 if(parseTxtLen >= 12){actCodes.push(parseTxt.substr(8, 4));}
27                 if(parseTxtLen >= 16){actCodes.push(parseTxt.substr(12, 4));}
28             }
29
30             if(actCodes.length > 1){
31                 var curInput = $(this);
32                 $.each(actCodes, function(i, v){
33                     if(curInput && v.length <= 4){
34                         curInput.val(v);
35                         curInput = curInput.next();
36                     }else{
37                         return false;
38                     }
39                 });
40             }
41
42         }else if(e.keyCode === 17){
43             setTimeout(function(){
44                 ctrlPress = false;
45             }, 1000);
46         }else{
47             if(oldVal.length >= 4){
48                 $(this).val(oldVal.substr(0,4));
49                 if($(this).next().length > 0){
50                     $(this).next().focus();
51                 }
52             }
53         }
54     }).keydown(function(e){
55         if(e.keyCode === 17){
56             ctrlPress = true;
57         }
58     });
59 }

这样就实现了4*4的序列号组件,接下来调用这个初始化函数就好了

$(document).ready(function(){
        initActCodeGroup($(‘.act-code-group‘)); });

打开浏览器看看我们的序列号组件吧!

时间: 2024-10-27 11:11:43

js 实现序列号效果实现的相关文章

js拖拽效果实现

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta

图片切换特效(1):原生JS图片切换效果

转自:http://www.codefans.net/jscss/code/4699.shtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

JS图片切换效果

源地址:http://www.codefans.net/jscss/code/4699.shtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&g

js实现手风琴效果

之前在慕课网上有练习手风琴效果,但是老师使用jquery简简单单的两三行实现了,今天自己用js练习一下效果 <div id="divbox"> <ul> <li class="pic1"><a href="javascript:;">床头明月光</a></li> <li class="pic2"><a href="javascr

原生JS实现分页效果1.0

不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>原生JS实现分页效果</title> <style> body{ margin:100px 200px; } #page{ margin:20px 0; } #

JS 之手风琴效果

<!DOCTYPE html> <html> <head> <meta charset= "utf-8" /> <title></title> <meta content= " "  />  <meta content= " "  /> <style> #c{width:500px;height:300px;overflow:hidden;

js元素闪动效果

<img src="http://yjy.allbring.com/UpLoadFiles/head/p1_20140326104945_17-10164142709.jpg"  style=" position:relative;"  id="aa" />function setAnimation() { var attr = ["top", "left"], b = 0; u = setIn

React.js实现原生js拖拽效果及思考

一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖拽效果. 首先,其实拖拽效果的思路是很简单的.主要就是三个步骤: 1.onmousedown的时候,启动可拖拽事件,记录被拖拽元素的原始坐标参数. 2.onmousemove的时候,实时记录鼠标移动的距离,结合被拖拽元素第一阶段的坐标参数,计算并设置新的坐标值. 3.onmouseup的时候,关闭可拖拽事件

原生JS实现分页效果2.0(新增了上一页和下一页,添加当前元素样式)

虽然写的很烂,但至少全部都是自己写的,因为这个没有固定的顺序,所以就没有封装,如果你技术好的话,可以你写的分享给我,谢谢. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>原生JS实现分页效果</title> <style> body{ margin:100px 200px; } #page{ m