10.1使⽤⼊门1、引⼊css
请查看下载⽂件中的style.css,把⾥⾯Validform必须部分复制到你的css中
(⽂件⾥这个注释 \"/*==========以下部分是Validform必须的===========*/\" 之后的部分是必须的)。(之前发现有部分⽹友把整个style.css都引⽤在了页⾯⾥,然后发现样式冲突了)
2、引⼊js (jquery 1.4.2 以上版本都可以)
3、给需要验证的表单元素绑定附加属性
4、初始化,就这么简单 注:
1、Validform有⾮压缩、压缩和NCR三个版本提供下载,NCR是通⽤版,当你页⾯因编码问题,提⽰⽂字出现乱码时可以使⽤这个版本;2、Validform没有限定必须使⽤table结构,它可以适⽤于任何结构,需要在tiptype中定义好位置关系。
10.2绑定附加属性
凡要验证格式的元素均需绑定datatype属性,datatype可选值内置有10类,⽤来指定不同的验证格式。
如果还不能满⾜您的验证需求,可以传⼊⾃定义datatype,⾃定义datatype是⼀个⾮常强⼤的功能,通过它可以满⾜你的任何需求。可以绑定的附加属性有:datatype、nullmsg、sucmsg、errormsg、ignore、recheck、tip、altercss、ajaxurl 和 plugin等。绑定⽅法如下所⽰: 说明:
内置基本的datatype类型有: * | *6-16 | n | n6-16 | s | s6-18 | p | m | e | url*:检测是否有输⼊,可以输⼊任何字符,不留空即可通过验证;*6-16:检测是否为6到16位任意字符;n:数字类型;n6-16:6到16位数字;s:字符串类型;s6-18:6到18位字符串;p:验证是否为邮政编码;m:⼿机号码格式;e:email格式;
url:验证字符串是否为⽹址。
⾃定义datatype的名称,可以由字母、数字、下划线、中划线和*号组成。
形如\"*6-16\"的datatype,Validform会⾃动扩展,可以指定任意的数值范围。如内置基本类型有\"*6-16\",那么你绑定datatype=\"*4-12\"就表⽰4到12位任意字符。如果你⾃定义了⼀个datatype=\"zh2-4\",表⽰2到4位中⽂字符,那么datatype=\"zh2-6\"就表⽰2到6位中⽂字符。
5.2版本之后,datatype⽀持规则累加或单选。⽤\分隔表⽰规则累加;⽤\"|\"分隔表⽰规则多选⼀,即只要符合其中⼀个规则就可以通过验证,绑定的规则会依次验证,只要验证通过,后⾯的规则就会忽略不再⽐较。如绑定datatype=\"m|e\",表⽰既可以填写⼿机号码,也能填写邮箱地址,如果知道填⼊的是⼿机号码,那么就不会再检测他是不是邮箱地址;datatype=\"zh,s2-4\",表⽰要符合⾃定义类型\"zh\",也要符合规则\"s2-4\"。注:
5.2.1版本之后,datatype⽀持:
直接绑定正则:如可⽤这样写datatype=\"/\\w{3,6}/i\",要求是3到6位的字母,不区分⼤⼩写;⽀持简单的逻辑运算:如datatype=\"m | e, *4-18 | /\\w{3,6}/i | /^validform\\.rjboy\\.cn$/\",
这个表达式的意思是:可以是⼿机号码;或者是邮箱地址,但字符长度必须在4到18位;或者是3到6位的字母,不区分⼤⼩写;或者输⼊validform.rjboy.cn,区分⼤⼩写。这⾥\分隔相当于逻辑运算⾥的\"&&\"; \"|\"分隔相当于逻辑运算⾥的\"||\";不⽀持括号运算。nullmsg
当表单元素值为空时的提⽰信息,不绑定,默认提⽰\"请填⼊信息!\"。如:nullmsg=\"请填写⽤户名!\"
5.3版开始,对于没有绑定nullmsg的对象,会⾃动查找class为Validform_label下的⽂字作为提⽰⽂字:如这样的html结构:
*⽤户名:
这⾥Validform_label跟input之间的位置关系,不⼀定是要同级关系,同级⾥没有找到的话,它还会在同级的⼦级、⽗级的同级、⽗级的同级的⼦级⾥查找。sucmsg 5.3+
当表单元素通过验证时的提⽰信息,不绑定,默认提⽰\"通过信息验证!\"。如:sucmsg=\"⽤户名还未被使⽤,可以注册!\"
5.3版开始,也可以在实时验证返回的json数据⾥返回成功的提⽰⽂字,请查看附加属性ajaxurl的介绍。errormsg
输⼊内容不能通过验证时的提⽰信息,默认提⽰\"请输⼊正确信息!\"。如:errormsg=\"⽤户名必须是2到4位中⽂字符!\"
5.3版开始,Validform可以根据你绑定的datatype智能的输出相应出错信息,具体介绍请查看ignore
绑定了ignore=\"ignore\"的表单元素,在有输⼊时,会验证所填数据是否符合datatype所指定数据类型,没有填写内容时则会忽略对它的验证;recheck
表单⾥⾯经常需要检查两次密码输⼊是否⼀致,recheck就是⽤来指定需要⽐较的另外⼀个表单元素。如:recheck=\"password1\",那么它就会拿当前元素的值跟该表单下,name为\"password1\"的元素⽐较。tip
表单⾥经常有些⽂本框需要默认就显⽰⼀个灰⾊的提⽰⽂字,当获得焦点时提⽰⽂字消失,失去焦点时提⽰⽂字显⽰。tip属性就是⽤来实现这个效果。它通常和altercss搭配使⽤。
如altercss
它需要和tip属性配合使⽤,altercss指定的样式名,会在⽂本框获得焦点时被删除,没有输⼊内容⽽失去焦点时重新加上。ajaxurl
指定ajax实时验证的后台⽂件的地址。
后台页⾯如valid.php⽂件中可以⽤ $_POST[\"param\"] 接收到值,Ajax中会POST过来变量param和name。param是⽂本框的值,name是⽂
本框的name属性。
5.2版本开始,可以在ajaxurl指定的url后绑定参数,如:ajaxurl=\"valid.php?myparam1=value1&myparam2=value2\";
5.3之前的版本中,该⽂件输出的字符会作为错误信息显⽰在页⾯上,如果验证通过需输出⼩写字母\"y\"。
在5.3版中,实时验证的返回数据做了调整,须是含有status值的json数据!跟callback⾥的ajax返回数据格式统⼀,建议不再返回字符串\"y\"或\"n\"。⽬前这两种格式的数据都兼容。注:
如果ajax校验通过,会在该元素上绑定validform_valid值为true。可以通过设置该值来控制验证能不能通过,如验证码的验证,第⼀次验证通过后,不⼩⼼右点击了下验证码图⽚,验证码换了,但是仍然指⽰这个对象已经通过了验证,这时可以⼿动调整该值:$(\"#name\")[0].validform_valid=\"false\"。
怎样设置ajax的参数,具体可以查看Validform对象的⽅法。plugin
指定需要使⽤的插件。
5.3版开始,对于⽇期、swfupload和密码强度检测这三个插件,绑定了plugin属性即可以初始化对应的插件,可以不⽤在validform初始化时传⼊空的usePlugin了。
如,你要使⽤⽇期插件,5.3之前版本需要这样初始化:$(\".demoform\").Validform({ usePlugin:{ datepicker:{} }});
5.3版开始,不需要传⼊这些空对象了,只需在表单元素上绑定plugin=\"datepicker\"就可以,初始化直接这样:$(\".demoform\").Validform();
10.3初始化参数说明所有可⽤的参数如下:
$(\".demoform\").Validform({ btnSubmit:\"#btn_sub\ btnReset:\".btn_reset\ tiptype:1,
ignoreHidden:false, dragonfly:false, tipSweep:true,
showAllError:false, postonce:true, ajaxPost:true, datatype:{
\"*6-20\":/^[^\\s]{6,20}$/,
\"z2-4\":/^[\一-\龥\豈-\鶴]{2,4}$/, \"username\":function(gets,obj,curform,regxp){
//参数gets是获取到的表单元素值,obj为当前表单元素,curform为当前验证的表单,regxp为内置的⼀些正则表达式的引⽤; var reg1=/^[\\w\\.]{4,16}$/,
reg2=/^[\一-\龥\豈-\鶴]{2,8}$/;
if(reg1.test(gets)){returntrue;} if(reg2.test(gets)){returntrue;} returnfalse;
//注意return可以返回true或 false 或字符串⽂字,true表⽰验证通过,返回字符串表⽰验证失败,字符串作为错误提⽰显⽰,返回false则⽤errmsg或默认的错误提⽰; },
\"phone\":function(){
// 5.0 版本之后,要实现⼆选⼀的验证效果,datatype的名称不需要以 \"option_\"开头; } },
usePlugin:{
swfupload:{}, datepicker:{},
passwordstrength:{}, jqtransform:{
selector:\"select,input\" } },
beforeCheck:function(curform){
//在表单提交执⾏验证之前执⾏的函数,curform参数是当前表单对象。 //这⾥明确return false的话将不会继续执⾏验证操作; },
beforeSubmit:function(curform){
//在验证成功后,表单提交前执⾏的函数,curform参数是当前表单对象。 //这⾥明确return false的话表单将不会提交; },
callback:function(data){
//返回数据data是json格式,{\"info\":\"demo info\ //info: 输出提⽰信息;
//status: 返回提交数据的状态,是否提交成功。如可以⽤\"y\"表⽰提交成功,\"n\"表⽰提交失败,在ajax_post.php⽂件返回数据⾥⾃定字符,主要⽤在callback函数⾥根据该值执⾏相应的回调操作;
//你也可以在ajax_post.php⽂件返回更多信息在这⾥获取,进⾏相应操作; //ajax遇到服务端错误时也会执⾏回调,这时的data是{ status:**, statusText:**, readyState:**, responseText:** };
//这⾥执⾏回调操作;
//注意:如果不是ajax⽅式提交表单,传⼊callback,这时data参数是当前表单对象,回调函数会在表单验证全部通过后执⾏,然后判断是否提交表单,如果callback⾥明确return false,则表单不会提交,如果return true或没有return,则会提交表单。 }});
参数说明:【所有参数均为可选项】
必须是表单对象执⾏Validform⽅法,⽰例中\".demoform\"就是绑定在form元素上的class名称;btnSubmit
指定当前表单下的哪⼀个按钮触发表单提交事件,如果表单下有submit按钮时可以省略该参数。⽰例中\".btn_sub\"是该表单下要绑定点击提交表单事件的按钮;btnReset
\".btn_reset\"是该表单下要绑定点击重置表单事件的按钮;tiptype
可⽤的值有:1、2、3、4和function函数,默认tiptype为1。( 3、4是5.2.1版本新增)1=>⾃定义弹出框提⽰;
2=>侧边提⽰(会在当前元素的⽗级的next对象的⼦级查找显⽰提⽰信息的对象,表单以ajax提交时会弹出⾃定义提⽰框显⽰表单提交状态);3=>侧边提⽰(会在当前元素的siblings对象中查找显⽰提⽰信息的对象,表单以ajax提交时会弹出⾃定义提⽰框显⽰表单提交状态);4=>侧边提⽰(会在当前元素的⽗级的next对象下查找显⽰提⽰信息的对象,表单以ajax提交时不显⽰表单的提交状态);如果上⾯的4种提⽰⽅式不是你需要的,你可以给tiptype传⼊⾃定义函数。通过⾃定义函数,可以实现你想要的任何提⽰效果:tiptype:function(msg,o,cssctl){ //msg:提⽰信息; //o:{obj:*,type:*,curform:*},
//obj指向的是当前验证的表单元素(或表单对象,验证全部验证通过,提交表单时o.obj为该表单对象),
//type指⽰提⽰的状态,值为1、2、3、4, 1:正在检测/提交数据,2:通过验证,3:验证失败,4:提⽰ignore状态,//curform为当前form对象;
//cssctl:内置的提⽰信息样式控制函数,该函数需传⼊两个参数:显⽰提⽰信息的对象和当前提⽰的状态(既形参o中的type);}
具体参见页。
tiptype不为1时,Validform会查找class为\"Validform_checktip\"的标签显⽰提⽰信息。tiptype=1时,会⾃动创建弹出框显⽰提⽰信息。Validform_checktip和表单元素之间的位置关系,会根据tiptype的值有对应的结构,上⾯已经做了说明。5.3版本开始,如果页⾯⾥没有显⽰出错信息的标签,会根据tiptype值⾃动创建Validform_checktip对象。ignoreHidden可⽤值: true | false。
默认为false,当为true时对:hidden的表单元素将不做验证;dragonfly
可⽤值: true | false。
默认false,当为true时,值为空时不做验证;tipSweep
可⽤值: true | false。
默认为false, 5.3版中做了修正,在各种tiptype下, 为true时提⽰信息将只会在表单提交时触发显⽰,各表单元素blur时不会触发信息提⽰;showAllError
可⽤值: true | false。
默认为false,true:提交表单时所有错误提⽰信息都会显⽰;false:⼀碰到验证不通过的对象就会停⽌检测后⾯的元素,只显⽰该元素的错误信息;postonce
可⽤值: true | false。
默认为false,指定是否开启⼆次提交防御,true开启,不指定则默认关闭;为true时,在数据成功提交后,表单将不能再继续提交。ajaxPost
可⽤值: true | false。
默认为false,使⽤ajax⽅式提交表单数据,将会把数据POST到config⽅法或表单action属性⾥设定的地址;datatype
传⼊⾃定义datatype类型,可以是正则,也可以是函数。datatyp:{
\"zh2-4\":/^[\一-\龥\豈-\鶴]{2,4}$/, \"phone\":function(gets,obj,curform,regxp){ //参数gets是获取到的表单元素值, //obj为当前表单元素, //curform为当前验证的表单,
//regxp为内置的⼀些正则表达式的引⽤。
//return false表⽰验证出错,没有return或者return true表⽰验证通过。 }}
具体⽰例请参考页;usePlugin
⽬前已整合swfupload、datepicker、passwordstrength和jqtransform四个插件,在这⾥传⼊这些插件使⽤时需要传⼊的参数。datepicker在Validform内调⽤时另外扩展了⼏个⽐较实⽤的参数,具体请参考demo页;beforeCheck(curform)
在表单提交执⾏验证之前执⾏的函数,curform参数获取到的是当前表单对象。函数return false的话将不会继续执⾏验证操作;beforeSubmit(curform)
在表单验证通过,提交表单数据之前执⾏的函数,data参数是当前表单对象。函数return false的话表单将不会提交;callback
在使⽤ajax提交表单数据时,数据提交后的回调函数。返回数据data是Json格式:{\"info\":\"demo info\info: 输出提⽰信息,
status: 返回提交数据的状态,是否提交成功,\"y\"表⽰提交成功,\"n\"表⽰提交失败,在ajax_post.php⽂件返回数据⾥⾃定字符,主要⽤在callback函数⾥根据该值执⾏相应的回调操作。你也可以在ajax_post.php⽂件返回更多信息在这⾥获取,进⾏相应操作;
如果不是ajax⽅式提交表单,传⼊callback,这时data参数是当前表单对象,回调函数会在表单验证全部通过后执⾏,然后判断是否提交表单,如果callback⾥return false,则表单不会提交,如果return true或没有return,则会提交表单。
5.3版开始,ajax遇到服务端错误时也会执⾏回调,这时的data是{ status:**,statusText:**, readyState:**, responseText:** }
因篇幅问题不能全部显示,请点此查看更多更全内容