1. //获取下一个span,可以通过这个对象给状态
  2. function gspan(cobj){
  3. while(true){
  4. if(cobj.nextSibling.nodeName!="SPAN")//因为有可能input标签后可能有空格再接span,或者中间有其它标签,但是我们要改的是span的内容,所以要获得input对应的span;
  5. cobj=cobj.nextSibling;
  6. else
  7. return cobj.nextSibling;
  8. }
  9. }
  10.  
  11. /*
  12. 通用检查方法
  13. 第一个参数:obj, 是用来检查的对象
  14. 第二个参数:info, 是用来检查的提示信息
  15. 第三个参数: fun, 是一个回调函数,用来检查值是否按条件输入。因为一个变量不能解决判断是否value值符合要求,所以用函数作为参数。
  16. 第四个参数: click只是一个状态, 分清楚是单击提交按,还是失去焦点。因为check里面的离开焦点,在单击提交时每一个都没有离开焦点,所以不会调用check里面的离开焦点函数;
  17. */
  18. function check(obj, info, fun, click){
  19. var sp=gspan(obj);
  20. obj.onfocus=function(){ //一旦获得焦点,就要变提示信息以及颜色;
  21. sp.innerHTML=info;
  22. sp.className="stats2";//stats表示几个状态不同的字体颜色;
  23.  
  24. }
  25.  
  26. obj.onblur=function(){//一旦失去焦点,就要检查这个value值,通过fun回调函数。
  27. if(fun(this.value)){//如果符合规则,则回调函数返回真,提示信息变为“输入正确”并改变颜色;
  28. sp.innerHTML="输入正确";
  29. sp.className="stats4";
  30.  
  31. }else{
  32. sp.innerHTML=info;
  33. sp.className="stats3";
  34. }
  35. }
  36.  
  37. if(click=="click")//如果是单击提交按钮的,就手动条用onblur方法
  38. obj.onblur();
  39. }
  40.  
  41. //页面加载完自动调用
  42. onload=regs
  43.  
  44. //一个函数,可以使用onsubmit调用, 也可以使用onload调用
  45. function regs(click){
  46.  
  47. var stat=true;//因为表单是否提交要通过判断其是否通过验证,返回stat给提交事件。
  48. var username=document.getElementsByName("username")[0];
  49. var password=document.getElementsByName("password")[0];
  50. var repass=document.getElementsByName("repass")[0];
  51. var email=document.getElementsByName("email")[0];
  52. var other=document.getElementsByName("other")[0];
  53.  
  54. check(username, "用户名的长度要在3-20之间", function(val){
  55.  
  56. if(val.match(/^\S+$/) && val.length >=3 && val.length <=20){
  57. return true;
  58. }else{
  59. stat=false;
  60. return false;
  61. }
  62. }, click);
  63.  
  64. check(password, "密码必须在6-20位之间", function(val){
  65. if(val.match(/^\S+$/) && val.length >=6 && val.length <=20){
  66. return true;
  67. }else{
  68. stat=false;
  69. return false;
  70. }
  71. }, click);
  72.  
  73. check(repass, "确定密码要和上面一致,规则也要相同", function(val){
  74. if(val.match(/^\S+$/) && val.length >=6 && val.length <=20 && val==password.value){
  75. return true;
  76. }else{
  77. stat=false;
  78. return false;
  79. }
  80. }, click)
  81.  
  82. check(email, "要按邮箱规则输入", function(val){
  83. if(val.match(/\w+@\w+\.\w/)){
  84. return true;
  85. }else{
  86. stat=false;
  87. return false;
  88. }
  89. }, click)
  90.  
  91. return stat;
  92. }

表单验证-JS实现的更多相关文章

  1. 表单验证—js循环所有表单验证

    [封装为表单验证的专用js,所有表单页面都可以调用] 1.表单 <form id="regForm" method="post" action=" ...

  2. 最常用的15个前端表单验证JS正则表达式

    在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的JavaScript正则表达式,其中包括用户名.密码强度.整数.数字.电子邮件地址(Email).手机号码.身份 ...

  3. 简单的表单验证(js、jquery)

    //javascript代码 function valForm(){ var username=document.getElementById("username"); var p ...

  4. 一个自己实现的js表单验证框架。

    经常要做一些表单验证的操作,每次都是用现成的框架,比如jquery,bootstrap等的验证插件,虽然也很强大,也很好用,可就是用起来需要引入许多js库,还有里面功能太多,感觉不太符合自己的需求.最 ...

  5. jquery validate表单验证插件-推荐

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  6. jquery validate表单验证插件

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  7. jquery validate表单验证插件的基本使用方法及功能拓展

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.    1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素 3.鼠标离开后的正确.错误提示及鼠标移入时的帮助提 ...

  8. jqury表单验证

    结合天天生鲜的用户注册页面,学习验证表单js register.js--表单验证源码 $(function(){ var error_name = false; var error_password ...

  9. 表单验证插件之jquery.validate.js

    提到表单验证的插件,第一个想到的就是jquery.validate.js,所以小生想在这里稍微详细地说一下这款插件的具体使用方法,便于理解,我直接附上整段demo的代码(没怎么调样式,主要是看js): ...

随机推荐

  1. 亚马逊订单api重构 api异常入库 在php中执行python

    https://docs.python.org/2/library/xml.etree.elementtree.html python  较 php能更高效第处理xml xpth php  扮演什么角 ...

  2. 解决Initializing Java Tooling 和 Initializing Java Tooling卡死问题

    遇到了如题的问题,使用如下方法解决了 工作中eclipse崩溃,再次启动后,状态栏一直显示  Initializing Javascript Tooling . 解决方案: 删除\workspace\ ...

  3. Docker容器/镜像查看及删除操作

    列出所有正在运行的容器 docker ps 暂停容器 docker stop <name> 删除容器 docker rm <name> 停止所有container docker ...

  4. python多线程(三)

    同步锁 两个需要注意的点: 线程抢的是GIL锁,GIL锁相当于执行权限,拿到执行权限后才能拿到互斥锁Lock,其他线程也可以抢到GIL,但如果发现Lock仍然没有被释放则阻塞,即便是拿到执行权限GIL ...

  5. 斯坦福大学Andrew Ng - 机器学习笔记(2) -- 逻辑回归 & 正则化

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

  6. mongodb文档支持的数据类型

    版权声明:转载请标明来源. https://blog.csdn.net/u014285882/article/details/25510377 1. 存储类型 mongodb文档相似于json,但不是 ...

  7. (转)使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

  8. windows安装pywin32

    下载旧版 https://sourceforge.net/projects/pywin32/files/pywin32/ 下载新版 https://github.com/mhammond/pywin3 ...

  9. C# 调用VS自带程序WebDev.WebServer40.EXE 源代码

    通过Process.Start启动,VS自带程序WebDev.WebServer40.EXE 在内网架设网站时,为安装IIS条件下用VS自带的小程序来测试效果非常不错! using System; u ...

  10. 单口双线PC连接转换器 手机电脑耳机转接线

    看着标题是不是很绕, 其实这个需求我相信不少人都有, 只是可能很少会想到. 手机换了一个又一个, 佩戴的耳机同样是一个又一个, 最别扭的是, 用手机的时候往往不用耳机, 不少童鞋都会选择把手机的耳机放 ...