jquery表单实时验证

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         .onError {
 8             color: red;
 9         }
10     </style>
11 </head>
12 <body>
13 <form action="" id="myForm">
14     <div class="init">
15         <label for="username">username:</label>
16         <input type="text" id="username"/>
17     </div>
18 
19     <div class="init">
20         <label for="email">email:</label>
21         <input type="text" id="email"/>
22     </div>
23 
24     <div class="init">
25         <label for="personInfo">personInfo:</label>
26         <input type="text" id="personInfo"/>
27     </div>
28 
29     <div class="sub">
30         <input type="submit" value="提交" id="send"/>
31         <input type="reset" id="red"/>
32     </div>
33 </form>
34 <script src="jquery.min.js"></script>
35 <script type="text/javascript">
36     $(function(){
37         $('#myForm :input').blur(function(){
38             var $parent = $(this).parent();
39             //在创建提交元素之前,将当前元素以前的提醒元素都删除
40             $parent.find('.onError').remove();
41             if($(this).is('#username')){
42                 if($(this).val() == "" || $(this).val().length < 6){
43                     var error_msg = '请至少输入6位的用户名';
44                     $parent.append('<span class="onError">'+error_msg+'</span>');
45                 }
46             }
47 
48             if($(this).is('#email')){
49                 if($(this).val() == "" || ($(this).val() != "" && !/w+[@]{1}w+[.]w+/.test($(this).val()))){
50                     var error_msg = '请输入正确的email地址';
51                     $parent.append('<span class="onError">'+error_msg+'</span>');
52                 }
53             }
54         }).keyup(function(){ //为达到实时验证,添加keyup 和 focus 事件
55             /*注意点:
56             trigger()方法触发事件后,还会执行浏览器的默认事件,例如:
57             $('input').trigger("focus);
58             这一行代码不仅会触发为<input>元素绑定的focus事件,
59             也会使<input>元素本身得到焦点(这是浏览器的默认操作)。
60 
61             如果只想触发绑定的focus事件,而不想执行浏览器默认操作,
62             可以使用jquery中另一个类似的方法---triggerHandler()
63             $("input").triggerHandler("focus");
64             该方法会触发<input>元素上绑定的特定事件,同时取消浏览器对此
65             事件的默认操作,即文本框只触发绑定的focus事件,不会得到焦点。
66             */
67 
68             /*这里,trigger('blur')不仅会触发为元素绑定的blur事件,
69             也会触发浏览器默认的blur事件,即不能将光标定位到文本框上。
70             而triggerHandler('blur')只会触发为元素绑定的blur事件,
71             而不触发浏览器默认的blur事件*/
72             $(this).triggerHandler('blur');
73         }).focus(function(){
74             $(this).triggerHandler('blur');
75         });
76 
77         $('#send').click(function(){
78             $('#myForm .init :input').trigger('blur');
79             var numError = $('#myForm .init .onError').length;
80             if(numError){
81                 return false;
82             }
83             alert("注册成功,密码已发送至您的邮箱!");
84         });
85     });
86 </script>
87 </body>
88 </html>
原文地址:https://www.cnblogs.com/xiayu25/p/6242279.html