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>