内容目录
在jQuery Validator中,上下文对象是一个非常重要的概念。
每一次开始执行校验时(每校验一个表单输入,就算一次),就会创建一个对应的上下文对象,用于保存本次校验的相关信息。
你可以通过启用调试模式(V.debug = true),jQuery Validator将会输出每一个上下文对象。
上下文对象具有如下属性(为了确保性能,其中某些属性可能只会在特定的校验器、或满足特定的条件下才会产生):
// 当前校验的上下文对象
var conext = {
origin: { },
// 本次校验的原始校验规则对象,不允许随意修改
rule: { },
// 本次校验的规则对象,是origin的副本,校验过程中可能会进行修改
value: "当前被校验表单元素的输入值",
event: new Event(),
// 触发本次校验的事件对象,只有基于事件触发时才有此属性
$dom: $("#price"),
// 表示当前被校验表单元素的jQuery对象,只有表单元素的校验才有此属性
$relatedDoms: [ ],
// 本次校验关联的其他表单元素的jQuery对象的数组,目前只有"equalsTo"和"compare"校验器会指定该属性
// 例如:equalsTo:"#password", equalsTo 校验器会将$("#password")放入$relatedDoms中
// 你可以通过 $relatedDoms[0](基于索引)来访问,也可以通过 $relatedDoms["password"](基于表单元素name属性值)访问
// compare校验器会根据表达式中除this外的其他表单元素出现的先后顺序依次放入,如果一个元素在表达式出现多次,则会被放入多次
// 以确保你可以直接按照表单元素在表达式中出现的任意位置索引来访问
name: "当前被校验表单元素的name属性",
validator: "range", // 当前正在执行的校验器
expression: "[6,16]", // 为当前校验器所指定的表达式
child: "number",
// 目前只有format校验器具有"number"、"date"、"idcard"3个子处理器
dateFormat: "yyyy-MM-dd",
// "format"的子处理器"date"的专有属性,存储当前的日期格式
age: 18,
// "format"的子处理器"idcard"的专有属性,存储身份证号码对应的年龄
formatResult: new Date(),
// "format"校验器的专有属性,存储格式化后的值。
// 子处理器"number"存储数字类型,"date"存储Date类型,"idcard"也存储日期类型(出生日期)。
remoteResult: JSONdata, // "remote"校验器专有属性,存储服务器端响应的JSON对象
_stop: true,
// 将规则定义内的所有校验器依次执行,如果发现_stop 为 true,则不再执行后续的校验器,直接返回true
// 例如{ required: false, format:"number"},执行required校验器时,required校验器发现输入为空,校验规则允许为空,因此也应该校验通过
// required校验器设置 _stop = true,并返回true。此时,jQuery Validator不再执行后面的format校验器,直接视为该表单元素本次校验通过。
trigger: ">=",
// 为了细化提示信息,校验器可以为触发校验不通过的具体部位指定不同的trigger
// 例如:range:"[6,16]",要求输入 >= 6 且 <= 16。如果输入是5,则在进行">="部分的校验时出错
// 如果输入是18,则在进行"<="部分的校验时出错。
// 如果不需要细化提示信息,trigger则默认等于validator属性
actual: "当前实际参与校验的值",
expected: 6, // 当前校验所期望部位的值。以range:"[6,16]"为例:
// 如果输入是5,则 无法 >= 6,因此校验不通过,此时 expected 为 6
// 如果输入是18,则 无法 <= 16,因此校验不通过,此时 expected 为 16
label: "当前被校验表单元素对应的语义名称",
message: "{label}不能为空"
// 校验器在执行过程中根据某些需要临时定义的提示信息,一般不存在该属性。
// 任何校验器或回调处理函数可以利用它完成一些特殊功能
// 它可以是字符串、对象或函数,如果返回false,则不会提示任何错误信息
};
0 条评论
撰写评论