验证框架

源码地址:http://zhifeiji.aliapp.com/script/validate.js

 * 这个验证插件是这样的指定一个form表单
 * 里面只需要有如下的结构就可以了
 *
 * <input name="email" data-validate="vType=requried,when=blur,fail=email不正确,success=不错哦;vType=email,when=blur,fail=密码不能为空&setClass:fail,success=setClass:show;" />
 *
 * 设置说明:data-validate这个属性标明要验证的格式
 * 每个验证用分号隔开(注意英文的哦),vType表示要验证的类型,which表示那个元素触发(默认是自己), when表示什么事件会触发这个判定,fail表示验证失败会出现什么提示这里&表示and,可以有多个操作,
 * setClass表示要设置的类用:分开后跟类名,removeClass表示移除类表示你要移除哪个类,这里可以添加html代码,但是不建议添加,这样会使你的html看起来非常混乱,基本上够了
 *
 * 说明:
 * 1 class类中不能使用-,可以使用下划线(_)
 * 2 验证的表单框,禁止使用onclick=functino这样绑定事件(!importent)
 * 3 addClass removeClass 里面的样式不要相同,否则后果自负
 * 4 这里只对submit做了处理,如果是ajax提交需要自己写了哦,这里提供ajax接口
 * 5 如果验证一组,则可以通过参数传入该组信息进行分析
 * 6 如果要在框的box要改变,那就传参数吧,然后修改方法
 * 7 支持多表单,支持多信息提示,比如验证密码的复杂度,每个复杂度定义一个方法,这样就行了,这样能满足大部分情况,支持ajax验证,ajax提交信息,都需要根据具体情况添加你自己的方法了
 * 8 validFun,是写验证方法的地方,会自动分配不同方法到不同元素的事件上
 *
 *
 * addForm参数是: {id:formid,which:"self",when:"click"}
 *
 * 生成后的结构是:{id:formid,ele:form,whichEle:"self",when:""}
 *
 * 生成事件队列是很有必要的,每个元素的每个事件要有一个验证队列以便于管理
 *
 * form 数据结构不合理存在问题,需要重新设计,因为如果一个验证失败了下面的验证还会继续,下面的验证结构会覆盖上面的验证结果,不合理
 *
 * 应改为队列,每个元素的每个验证事件都要有一个事件队列如果一个失败了,就取消后面要执行的验证同时记录每个失败的验证最后统一整理
 * which,相应的改为要验证哪个元素,而不是由哪个元素来验证,否则就杯具了config,是写配置信息的地方,正则表达式都在这里
 *
 *
使用实例,自己用,写一下笔记
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>居中</title>
        <style type="text/css">
            .succMail {
                border: green 1px solid;
            }
            
            .failMail {
                border: red 1px solid;
            }
            
            .succNum {
                border: green 1px solid;
                background: #cccccc;
            }
            
            .failNum {
                border: green 1px solid;
                background: #eeeeee;
            }
            
            .onSucc {
                border: 1px solid #a5c760;
                background: #f4ffd4;
            }
            
            .onFail {
                border: 1px solid red;
                background: #FFDBDB;
            }
        </style>
        <script type="text/javascript" src="validatePrject/validate.js">
        </script>
		
    </head>
    <body>
        <form id="form1">
            <p>
                6-8位数字:<input id="s1" name="number" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=不能为空哦!&addClass:onFail&removeClass:onSucc,success=你已经输入值了!&addClass:onFail&removeClass:onSucc;vType=number,when=blur, fail= <span>一定要输入数字哦!</span>&addClass:onFail&removeClass:onSucc,success  = 你输入的是正确的!&addClass:onSucc&removeClass:onFail ;vType=len(<8&>6),when=blur,fail=长度太长了哦!&addClass:onFail&removeClass:onSucc,success=长度很合适呵呵!&addClass:onSucc&removeClass:onFail ;" />
            </p>
            <p>
                email:<input id="s2" name="email" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=邮箱不能为空!,success=正确哦!;vType=email,when=blur, fail= <span>email不正确哦!</span>& addClass : failMail &  removeClass :  succMail,success  =email输入正确哦!&addClass:succMail&removeClass:failMail;" />
            </p>
            <p>
                <input id="s3" name="userName" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=username 错误& removeClass: right &addClass : worgnt,success=username正确;vType=email,when=blur, fail= <idv>密码不能为空</st>& addClass : rigte &  removeClass :  worgn &    addClass: soms,success  =duahobin&addClass:set;" />
            </p>
            <p>
                选择框:
                <select name="sx" data-validate="vType=required,when=change,fail=性别必须要选择& removeClass: right &addClass : worgnt,success=干的好!;">
                    <option></option>
                    <option value="m">男</option>
                    <option value="w">女</option>
                </select>
            </p>
            <p>
                多选:<input type="checkbox" /><span>读书</span>
                <input type="checkbox" /><span>看书</span>
                <!-- 如果是组的话就只能过滤了用参数传进来所有组成员 -->
            </p>
            <p>
                qq号:<input id="qq" name="qq" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=username 错误& removeClass: right &addClass : worgnt,success=username正确;vType=email,when=blur, fail= <idv>密码不能为空</st>& addClass : rigte &  removeClass :  worgn &    addClass: soms,success  =duahobin&addClass:set;" />
            </p><input type="submit" value="提交"/>
        </form><input id="testVd" type="button" name="vem" value="验证" />
        <form id="form2">
            <p>
                6-8位数字:<input id="s1" name="number" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=不能为空哦!&addClass:onFail&removeClass:onSucc,success=你已经输入值了!&addClass:onFail&removeClass:onSucc;vType=number,when=blur, fail= <span>一定要输入数字哦!</span>&addClass:onFail&removeClass:onSucc,success  = 你输入的是正确的!&addClass:onSucc&removeClass:onFail ;vType=len(<8&>6),when=blur,fail=长度太长了哦!&addClass:onFail&removeClass:onSucc,success=长度很合适呵呵!&addClass:onSucc&removeClass:onFail ;" />
            </p>
            <p>
                email:<input id="s2" name="email" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=邮箱不能为空!,success=正确哦!;vType=email,when=blur, fail= <span>email不正确哦!</span>& addClass : failMail &  removeClass :  succMail,success  =email输入正确哦!&addClass:succMail&removeClass:failMail;" />
            </p>
            <p>
                <input id="s3" name="userName" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=username 错误& removeClass: right &addClass : worgnt,success=username正确;vType=email,when=blur, fail= <idv>密码不能为空</st>& addClass : rigte &  removeClass :  worgn &    addClass: soms,success  =duahobin&addClass:set;" />
            </p>
            <p>
                选择框:
                <select name="sx" data-validate="vType=required,when=change,fail=性别必须要选择& removeClass: right &addClass : worgnt,success=干的好!;">
                    <option></option>
                    <option value="m">男</option>
                    <option value="w">女</option>
                </select>
            </p>
            <p>
                多选:<input type="checkbox" /><span>读书</span>
                <input type="checkbox" /><span>看书</span>
                <!-- 如果是组的话就只能过滤了用参数传进来所有组成员 -->
            </p>
            <p>
                qq号:<input id="qq" name="qq" style="displayasdf;" class="asdf" data-validate="vType=required,when=blur,fail=username 错误& removeClass: right &addClass : worgnt,success=username正确;vType=email,when=blur, fail= <idv>密码不能为空</st>& addClass : rigte &  removeClass :  worgn &    addClass: soms,success  =duahobin&addClass:set;" />
            </p><input type="submit" value="提交"/>
        </form>
        <script type="text/javascript">
            
            validator.addForm({
                id: "form1",
                which: "form1",
                when: "submit"
            });
			  
            validator.addForm({
                id: "form2",
                which: "form2",
                when: "submit"
            });
			
			
        </script>
    </body>
</html>

  

posted @ 2012-03-14 15:40  dushaobin  Views(403)  Comments(0Edit  收藏  举报