架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

shopnc中jquery插件之Validation

Posted on 2008-12-09 10:35  chen eric  阅读(872)  评论(0编辑  收藏  举报
shopnc中jquery插件之Validation
2008-11-15 01:26

shopnc中jquery插件之Validation
表单验证http://docs.jquery.com/Plugins/Validation

说明:

提交表单后,第一个未通过验证的元素获得焦点,
如果在提交表单,不能过过验证的元素是焦点,刚它代替第一个未通过
验证的元素,获得焦点(就是说焦点不变)

当元素未被标记为未通过验证时,按tab键切换(元素里的值突然为空),不会出现未通过的提示。
当元素未被标记为未通过验证时,如果有输入,再失去焦点,会被验证

当元素被标记来未通过验证时,输入正确的值,标记会移除


**validate插件中的选择项:
debug:true不会提交表单
如果一个页面中有多个表单,用
$.validator.setDefaults({
   debug: true
})

submitHandler:function
通过验证后运行的函数,里边要加上表单提交的函数,否则表单不会提交

ignore:   忽略对某个元素的验证,这里接受的参数是jquery中not()可以接受的参数

rules:自定义规则,key:value的形式,key是要验证的元素,value可以是字符串或对象,后边会有几个例子说明
message:自定义的提示信息key:value的形式key是要验证的元素,值是字符串或函数,后边有几个例子说明

groups:对一组元素的验证,用一个错误提示(如何显示自定义的message呢?还是有message中定义的原来的元素的名子
这里给groups定义的名子实际上没什么作用
)

onsubmit: false意思是说不进行验证了?用其它方式进行验证

onfocusout: false意思是说,在未标记为未通过验证之前,不出现提示
加不加这样的区别[在未标记为未通过验证之前]:
不加时,当你在一个元素有输入,但不合法时,这个元素blur时会有提示出现
加了后: 不会出现提示

onkeyup作用不大
onclick,与checkbox,radiobox验证有关

focusInvalid: false
前边说过,提交表单后,未通过验证的表单(第一个或提交之前获得焦点的未通过验证的表单)会获得焦点
这个选择加了以后,没有元素会获得焦点

focusCleanup: true
当未通过验证的元素获得焦点时,移除错误提示

errorClass:指定错误提示的css类名,可以自定义错误提示的样式

errorElement: "em"用什么标签标记错误,默认是label

wrapper: 用什么标签再把上边的errorELement包起来

errorLabelContainer:把错误放到期里指定的元素里

errorContainer:用处不大

showErrors:跟一个函数,可以显示总共有多少个未通过验证的元素

errorPlacement:跟一个函数,可以自定义错误放到哪里

success:要验证的元素通过验证后的动作,如果跟一个字符串,会当做一个css类,也可跟一个函数

highlight:可以给未通过验证的元素加效果,闪烁等

 

**插件方法
validate 上边说人选项就是为它服务的
valid    作用不大,就是都通过验证结果为true

//下边这三个rules有关的,必须放在validate调用之后
rules( ) 返回指定元素的验证规则,返回一个对象
rules("add",rules)添加规则,例
$("#username").rules("add",{
    required:true
                   })
这个比较有用,如果一个表单在不同的地方需要不同的验让方法,可以用这临时加上验证规则
rules( "remove",rules)移除验证规则,只能移除在validdate中加的或通过add加的,就是说
不能移除在元素中直接写的,如class="required"

removeAttrs:移除属性,前边的rules("remove":rules),不能移除在元素里直接写的class="required"
这个方法不是用来完成这点的

插件中自定义的选择符
:blank 表单中所有空白值的元素
:filled 有值的元素
:unchecked 与jquery中的:checked相反

**插件中提共的一个实用方法
jQuery.format(tempalte,arg1,arg2...)
用后边的arg1 arg2等代替template中的{0},{1}等

**插件的公共方法,有几个,下边的这个比较有用
addMethod( name, method, message)
参数name是添加的方法的名子
参数method是一个函数,接收三个参数(value,element,param) value是元素的值,element是元素本身 param是参数,从
如得到?下边的例子有说明
参数messsage是一个字符串

我们可以用addMethod来添加除built-in Validation methods之外的验证方法

比如有一个字段,只能输一个字母,范围是a-f,写法如下
$.validator.addMethod("af",function(value,element,params){
   if(value.length>1){
    return false;
   }
   if(value>=params[0] && value<=params[1]){
    return true;
   }else{
    return false;
   }
},"必须是一个字母,且a-f");
用的时候,比如有个表单字段的id="username",则在rules中写
username:{
   af:["a","f"]
}


addMethod的第一个参数,就是添加的验证方法的名子,这时是af
addMethod的第三个参数,就是自定义的错误提示,这里的提示为:"必须是一个字母,且a-f"
addMethod的第二个参数,是一个函数,这个比较重要,决定了用这个验证方法时的写法
如果只有一个参数,直接写,如果af:"a",那么a就是这个唯一的参数,如果多个参数,用在[]里,用逗号分开


**插件的内置验证方式
required:true 必须有值
required:"#aa:checked"表达式的值为真,则需要验证
required:function(){}返回为真,表时需要验证
后边两种常用于,表单中需要同时填或不填的元素

remote:url这个比较有用,判断注册用户等是否已经错在,服务器端输出true,表示验证通过

minlength:最小长度,这个用于text,验证不通过会提示错误的,这里主要说一下
checkbox,我测试的时候,错误提示并不是跟在几个checkbox的最后边,比如
<input type="checkbox" name="checkbox[]" id="checkbox" value="c"/>
<input type="checkbox" name="checkbox[]" id="checkbox" value="d"/>
验证用:
"checkbox[]":{
required:true,
minlength:2
}
错误提示会跟在第一个checkbox后边,这时候可以用配置选项中的errorPlacement来定位置
errorPlacement:function(error, element){
if(element.attr("name") == "checkbox[]"){
   error.appendTo("#checkwrong");//指定一个你想放的位置
}else{
   error.insertAfter(element)
}
}
然后的几个
maxlength
rangelength
min
max
range用法差不多
email:验证邮件
url:这没什么好说的

date,dateISO,dateDE,不实用,验证日期的需要自己重写

digits:只能是数字
creditcard:验证信用卡,不实用
accept:输入的最后的字符要是什么,常用于文件的扩展名
equalTo:与哪个表单字段的值相等,常用于重复输入密码

最上边的连接是这个插件的说明及一些教程,具体用的时候有实现不了的可以看下他的dom,及Reference