绑定附加属性 凡要验证格式的元素均需绑定datatype属性,datatype可选值内置有10类,用来指定不同的验证格式。 如果还不能满足您的验证需求,可以传入自定义datatype,自定义datatype是一个非常强大的功能,通过它可以满足你的任何需求。 可以绑定的附加属性有:datatype、nullmsg、sucmsg、errormsg、ignore、recheck、tip、altercss、ajaxurl 和 plugin等。 绑定方法如下所示: ``` <!--ajax实时验证用户名--> <input type="text" value="" name="name" datatype="e" ajaxurl="valid.php?myparam1=value1&myparam2=value2" sucmsg="用户名验证通过!" nullmsg="请输入用户名!" errormsg="请用邮箱或手机号码注册!"/> <!--密码--> <input type="password" value="" name="userpassword" datatype="*6-15" errormsg="密码范围在6-15位之间!"/> <!--确认密码--> <input type="password" value="" name="userpassword2" datatype="*" recheck="userpassword" errormsg="您两次输入的账号密码不一致!"/> <!--默认提示文字--> <textarea tip="请在这里输入您的意见。" errormsg="很感谢您花费宝贵时间给我们提供反馈,请填写有效内容!" datatype="s" altercss="gray" class="gray" name="msg" value="">请在这里输入您的意见。</textarea> <!--使用swfupload插件--> <input type="text" plgin="swfupload" class="inputxt" disabled="disabled" value=""> <input type="hidden" value="" pluginhidden="swfupload"> <!--使用passwordStrength插件--> <input type="password" errormsg="密码至少6个字符,最多18个字符!" datatype="*6-18" plugin="passwordStrength" class="inputtxt" name="password" value=""> <div class="passwordStrength" style="display:none;"> <b>密码强度:</b> <span>弱</span> <span>中</span> <span class="last">强</span> </div> <!--使用DatePicker插件--> <input type="text" plugin="datepicker" class="input" name="brithday" value="">` ``` **说明:** 内置基本的datatype类型有: * | *6-16 | n | n6-16 | s | s6-18 | p | m | e | url | 序号 | 类型 | 描述 | | ---- | ----- | ---------------------------------------------------- | | 1 | * | 检测是否有输入,可以输入任何字符,不留空即可通过验证 | | 2 | *6-16 | 检测是否为6到16位任意字符 | | 3 | n | 数字类型 | | 4 | n6-16 | 6到16位数字 | | 5 | s | 字符串类型 | | 6 | s6-18 | 6到18位字符串 | | 7 | p | 验证是否为邮政编码 | | 8 | m | 手机号码格式 | | 9 | e | email格式 | | 10 | 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结构: ``` <span class="Validform_label">*用户名:</span><input type="text" val="" datatype="s" /> ``` 当这个文本框里没有输入时的出错信息就会是:"请输入用户名!" 这里Validform_label跟input之间的位置关系,不一定是要同级关系,同级里没有找到的话,它还会在同级的子级、父级的同级、父级的同级的子级里查找。 - **sucmsg** 5.3+ ``` 当表单元素通过验证时的提示信息,不绑定,默认提示"通过信息验证!"。 如:sucmsg="用户名还未被使用,可以注册!" 5.3版开始,也可以在实时验证返回的json数据里返回成功的提示文字,请查看附加属性ajaxurl的介绍。 ``` - **errormsg** ``` 输入内容不能通过验证时的提示信息,默认提示"请输入正确信息!"。 如:errormsg="用户名必须是2到4位中文字符!" ``` 5.3版开始,Validform可以根据你绑定的datatype智能的输出相应出错信息,具体介绍请查看[tipmsg](http://validform.rjboy.cn/document.html#tipmsg) - **ignore** ``` 绑定了ignore="ignore"的表单元素,在有输入时,会验证所填数据是否符合datatype所指定数据类型, 没有填写内容时则会忽略对它的验证; ``` - **recheck** ``` 表单里面经常需要检查两次密码输入是否一致,recheck就是用来指定需要比较的另外一个表单元素。 如:recheck="password1",那么它就会拿当前元素的值跟该表单下,name为"password1"的元素比较。 ``` - **tip** 表单里经常有些文本框需要默认就显示一个灰色的提示文字,当获得焦点时提示文字消失,失去焦点时提示文字显示。tip属性就是用来实现这个效果。它通常和altercss搭配使用。如: ``` <input type="text" value="默认提示文字" class="gray intxt" tip="默认提示文字" altercss="gray" /> ``` - **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对象的[config](http://validform.rjboy.cn/document.html#config)方法。 - **plugin** 指定需要使用的插件。 5.3版开始,对于日期、swfupload和密码强度检测这三个插件,绑定了plugin属性即可以初始化对应的插件,可以不用在validform初始化时传入空的usePlugin了。 如,你要使用日期插件,5.3之前版本需要这样初始化: ``` $(".demoform").Validform({ usePlugin:{ datepicker:{} } }); ``` 5.3版开始,不需要传入这些空对象了,只需在表单元素上绑定plugin="datepicker"就可以,初始化直接这样: ``` $(".demoform").Validform(); ```