`
renyanwei
  • 浏览: 70055 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

自己写JS通用表单验证V1.0,其实就是那么回事

阅读更多

闲着无聊写JAVA快写吐血了,哎,换换口味吧,顺手就操起了很久都没看了JavaScript。写点儿什么好呢?感觉表单验证还是实在些(错了,是非常实用,试想下你每次判断用户输入是何等的繁琐)因为JavaScript也实在是干不了什么了(是我用它干不了什么),不过还得学好它,JavaScript很好很强大,而且进入初进公司听说掌握这个挺重要的,好了,废话少说,先看程序,很简单的,大牛可以自觉关闭

/*
 *通用表单验证1.0
 *
 *作者:renyanwei
 *版本:1.0
 *修改日期:2008-10-27
*/

//用于放置验证失败的控件集合
var erritem=new Array();

//验证成功消息
var sucstr="√";

//错误信息集合,如果控件没指定错误信息容器
//将统一在警告框中显示
var errmsg="";

//各就各位
function fun(form)
{
	
    var formobj=document.getElementById(form);  //得到表单对象
    var iarray=formobj.getElementsByTagName("input");
    
    for(var i=0;i<iarray.length;i++)
    {
        var check=iarray[i].getAttribute("check");        
        switch(check){
            case "charcount":
                  erritem[i]=CharCount_fun(iarray[i]);
            break;
            case "numrange":
                  erritem[i]=NumRange_fun(iarray[i]);
            break;
            case "comparison":
                  erritem[i]=Comparison_fun(iarray[i]);
            break;
			case "regex":
				  erritem[i]=Common_fun(iarray[i]);
            default:
                  erritem[i]=true;
            break;
        }
    }
    if(errmsg!="")
    {
        alert(errmsg);
        errmsg="";
    }
    return reform();
}
/*
 *验证字符范围方法
 *maxsize:最大个数
 *minsize:最小个数
 *errmsg:验证失败的错误信息
 *msgdiv:用于显示错误信息容器,如果没有则弹出警告框
*/
function CharCount_fun(inp)
{
    var max=inp.getAttribute("maxsize");
    var min=inp.getAttribute("minsize");
    var msgdiv=document.getElementById(inp.getAttribute("msgdiv"));
    var errmsg=inp.getAttribute("errmsg");
	var val=inp.value.replace(/^\s+|\s+$/,"");
    var leng=val.length;
    if(leng<min||leng>max)
    {
        return showmsg(msgdiv,errmsg,false);
    }else{
        return showmsg(msgdiv,sucstr,true);
    }
}
/*
 *验证数字范围方法
 *maxnum:最大值
 *minnum:最小值
 *errmsg:验证失败的错误信息
 *msgdiv:用于显示错误信息容器,如果没有则弹出警告框
*/
function NumRange_fun(inp)
{
    var max=inp.getAttribute("maxnum");
    var min=inp.getAttribute("minnum");
    var msgdiv=document.getElementById(inp.getAttribute("msgdiv"));
    var errmsg=inp.getAttribute("errmsg");
    var val=inp.value;
    if(isNaN(val)||val<min||val>max)
    {
        return showmsg(msgdiv,errmsg,false);
    }else{
        return showmsg(msgdiv,sucstr,true);
    }
}
/*
 *比较验证方法,比较两个控件值
 *to:要与之比较的控件ID
 *errmsg:验证失败的错误信息
 *msgdiv:用于显示错误信息容器,如果没有则弹出警告框
*/
function Comparison_fun(inp)
{
    var msgdiv=document.getElementById(inp.getAttribute("msgdiv"));
    var errmsg=inp.getAttribute("errmsg");
    var toid=document.getElementById(inp.getAttribute("to"));
    var val=inp.value;
    if(val!=toid.value||val=="")
    {
        return showmsg(msgdiv,errmsg,false);
    }else{
        return showmsg(msgdiv,sucstr,true);
    }
}
/*
 *正则表达式验证方法
 *regstr:正则表达式,无前后\\
 *errmsg:验证失败的错误信息
 *msgdiv:用于显示错误信息容器,如果没有则弹出警告框
*/
function Common_fun(inp)
{
    var msgdiv=document.getElementById(inp.getAttribute("msgdiv"));
	var reg=new RegExp(inp.getAttribute("regstr"));
    var errmsg=inp.getAttribute("errmsg");
    var val=inp.value;
    if(!reg.test(val))
    {
        return showmsg(msgdiv,errmsg,false);
    }else{
        return showmsg(msgdiv,sucstr,true);
    }
}
//显示消息方法
function showmsg(msgdiv,msg,istrue)
{
    if(msgdiv==null)
    {
        errmsg+=msg+"\n";
    }else{
        msgdiv.innerHTML=msgdiv.innerHTML+"<font color='red'>"+msg+"<font>";
    }
    return istrue;
}
//总体验证方法,遍历所有控件是否同时通过验证
function reform()
{
    for(var i=0;i<erritem.length;i++)
    {
        if(!erritem[i])
        {
            return false;
        }
    }
    return true;
}

有兴趣的可以看下实例

---------点击查看---------

 

总结:这里主要是用到了HTML控件的自定义属性,重点应用了getAttribute方法,然后得到属性进行校验,哎 写个JS比写个java程序累多了,因为JavaScript实在是没什么好的调试工具,有的错误还莫名其妙,很是让人崩溃,总之不管好坏总是写出了个能运行的锥形,O(∩_∩)O哈哈~ ,挺高兴的,版本号暂定为1.0

还没解决的问题:根据校验类型自动注册onblue事件,光标进入后清除错误信息,还得靠事件驱动,这点儿确实很难为我,FF和IE还不一样,哎,不过没有真的不爽,等到2.0的时候一定得添加上去

6
2
分享到:
评论
4 楼 yeseruanchong 2008-10-29  
向前辈们 多多学习!!
3 楼 renyanwei 2008-10-29  
Fly_m 写道

不错哈,完全靠自己的思想来做的。我也想做一个,就是不知道怎么开头。
不过,你可以研究一个网易的表单验证js框架form.js,这个对你现在的表单验证有很大的帮助,而且更加科学。

非常感谢
2 楼 yushan 2008-10-29  
很好 很强大 收藏了
1 楼 Fly_m 2008-10-28  
不错哈,完全靠自己的思想来做的。我也想做一个,就是不知道怎么开头。
不过,你可以研究一个网易的表单验证js框架form.js,这个对你现在的表单验证有很大的帮助,而且更加科学。

相关推荐

    通用FormValid1.0-js验证框架

    简介:完全通过html不需要写JS验证程序就可以实现表单验证功能,可支持一个表单元件多条件验证, 同一页面多表单可同时使用,和服务端程序无关系,完全客户端方式。 Demo1 基本使用方法 Demo2 自定义错误信息显示...

    Pisx通用表单验证框架2.0

    PISX通用表单验证具有以下一些功能: 1、验证不允许为空的录入字段。 2、验证录入字段的有效长度,不允许小于最短字节数,也不允许超过最长字节数。 3、根据不同数据类型进行验证,验证其是否为合法的数据类型。这些...

    web前段通用验证器common-validator-2.0.js

    一款灵活通用的JavaScript验证组件,支持灵活多样的验证方式。 此为2.0版本,是在1.0基础架构上做了全新的调整, 希望能通过这个JS验证器小组件为我们码农们提供微小的帮助。 1、启用创建Validator方式,不再使用...

    JS实现的通用表单验证插件完整实例

    本文实例讲述了JS实现的通用表单验证插件。分享给大家供大家参考。具体如下: 这里演示一个通用的JS表单验证插件代码。使用方法:第一步:需设定表单项数据类型,第二步:实例表单验证,验证错误提示说明(程序有...

    Web前段通用验证器框架

    2.0是在1.0基础架构上做了全新的调整, 希望能通过这个JS验证器小组件为我们码农们提供微小的帮助。 1、启用创建Validator方式,不再使用旧的静态方式。 2、加入多模式验证规则。既支持添加模式,也支持FORM表单...

    JavaScript经典实例

     1.0简介  1.1连接两个或多个字符串  1.2连接字符串和另一种数据类型  1.3条件比较字符串  1.4在字符串中查找子字符串  1.5从一个字符串提取子字符串  1.6检查一个存在的、非空的字符串  1.7将一个关键字...

    Java Web应用详解.张丽(带详细书签).pdf

    7.5 网络留言板V1.0 第8章数据库连接池技术 8.1 数据库连接池 8.2 网络留言板V2.0 8.3 Commons DbUtils 8.4 网络留言板V3.0 第9章 JSP及其应用 9.1 JSP基础知识 9.2 JSP 语法 9.3 JSP 范例 9.4 网络留言板V...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    6.jQuery带Tips动画提示通用表单验证插件下载(jquery validate),动画效果漂亮 7.jQuery鼠标移到下载地址滑出气泡提示效果的插件 8.又一款jquery实现链接Tip演示下载 9.常用jQuery弹出式链接提示效果Tooltip...

    JAVA上百实例源码以及开源项目

    Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密  WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件...

    JAVA上百实例源码以及开源项目源代码

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

    asp.net知识库

    正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为...

Global site tag (gtag.js) - Google Analytics