JavaScript实现表单验证_02

注册3次错误,最终的结果:

 

 代码:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>表单验证_02</title>
 6     </head>
 7     <body>
 8         <!--把验证放在注册按钮的onclick事件属性里使用,同样还有另一种调用方式,就是form标签的onsubmit事件属性,,功能一样<br />-->
 9         <form method="post" onsubmit="return eg.regCheck()" action="">
10         <input type="hidden" id="errnum" value="0"/>
11         <!--由于错误的次数无需显示出来,所以将其隐藏起来-->
12             
13         账号:<input type="text" name="" id="userid" /><br/><br/>
14         密码:<input type="password" name="" id="userpassword" /><br/><br/>
15         
16       确认密码:<input type="password" name="" id="userpassword1" /><br/><br/>
17         简介:<textarea name="" rows="4" cols="18" id="about"></textarea><br/><br/>
18         <input type="submit"  value="注册" id="regBtn"  />
19         <input type="button"  value="解锁"  id="regUnlock" style="display: none;"  onclick="eg.unlock()" />
20         </form>
21         <script>
22             var eg={};
23             //声明一个对象,当作命名空间来使用
24             
25             //定义一个公共函数来获取id元素,减少代码量,提高代码复用率
26             eg.$=function(id){
27                 return document.getElementById(id);
28             };
29             eg.regCheck=function(){
30                 var uid=eg.$("userid");
31                 var upwd=eg.$("userpassword");
32                 var upwd1=eg.$("userpassword1");
33                 var about=eg.$("about");
34                 
35                 if(uid.value=='')
36                 {
37                     alert('账号不能为空!!!');
38                         eg.err();
39                     return false;//返回false就会阻止表单的提交
40                 }
41                 
42                 if(upwd.value==''){
43                     alert('密码不能为空!!');
44                         eg.err();
45                     return false;//返回false就会阻止表单的提交
46                 }
47                 if(upwd.value!=upwd1.value)
48                 {
49                     alert('输入密码不一致!!!');
50                         eg.err();
51                     return false;//返回false就会阻止表单的提交
52                     
53                 }
54                 if(about.value.length>60)//valu是字符串的属性
55                 {
56                     alert('简介太长!!!');
57                     eg.err();
58                     return false;
59                 }
60                 return true;//返回true就会允许表单的提交
61             };
62             
63             
64             //出错时记录错误次数
65             eg.err=function(){
66                 var el=eg.$("errnum");
67                 var old=el.value;
68                 
69                 el.value=parseInt(old)+1;//把字符串转换为整数+1,并保存起来
70                 eg.lock();
71                 
72             };//用来检查是否应该锁定
73             
74             
75             //通过次数判断是否要锁定注册
76             eg.lock=function(){
77                 var err=eg.$("errnum");
78                 if(parseInt(err.value)>2){
79                     eg.$("regBtn").disabled=true;//根据业务需求。输错3次就锁定
80                     eg.$("regUnlock").style.display="block";//同时显示按钮
81                     
82                 }
83             };
84             
85             //解锁
86             eg.unlock=function(){
87                 eg.$("regBtn").disabled=false;//根据业务需求、解锁就是可以让用户重新注册
88                     eg.$("regUnlock").style.display="none";//元素所有样式都挂载到style属性下
89             }
90             
91             
92             
93         </script>
94         
95     </body>
96 </html>
表单验证_02.html

    在进行验证注册时,我们有两种方式:

  1. 把验证放在注册按钮的onclick事件属性里使用。

         2.form标签的onsubmit事件属性。例如本例中

<form method="post" onsubmit="return eg.regCheck()" action="">

 

本示例特点:

      在以前我们都是直接提示错误信息就行了,在该例中我采用的是进行错误的统计,这些统计的数据非常有用,可以为后台系统保存起来用于分析用户的错误率,甚至可以分析出用户一般会在那一些字段出错。当然记录的错误信息不给用户看到,可以使用input的type属性是hidden元素来进行隐藏,用户如果输入3次错误就会显示解锁的按钮,而注册的按钮也不能再使用,当点击解锁时,可以再进行注册。

    

posted @ 2019-03-05 08:59  perfect*  阅读(360)  评论(0编辑  收藏  举报
$(function() { $('#cnblogs_post_body img').each(function() { let imgSrc = $(this).attr('src'); let year = parseInt(imgSrc.substr(imgSrc.indexOf('g')+1,4)); if(year >= 2022){ imgSrc += `?watermark/2/text/amlndWl5YW4=/font/5a6L5L2T/fontsize/15/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast`; $(this).attr('src', imgSrc) } }) })