当前位置: 首页 > 中文手册 > jQuery Validator define() 预定义校验规则

jQuery Validator define() 预定义校验规则

jQuery Validator的define()方法用于预定义校验规则,以便于在后续的所有校验中,直接通过规则名称引用对应的校验规则定义。

语法

define()方法支持以下两种用法:

用法一:一次定义单个校验规则。

define(ruleName, rule, global)

用法二:一次性定义多个校验规则。

define(rules, global)

参数

参数描述
ruleNameString类型指定规则名称。
ruleObject类型规则的具体定义对象。
rulesObject类型以多个ruleName:rule的形式,同时定义多个规则。
global可选/Boolean类型指示定义的规则是否为全局规则。如果是全局规则,则所有实例均可使用;否则只有当前实例可以使用。该值默认为false

参数rule是一个主要由一到多个校验器组成的规则对象,对象中的每个属性名称就是校验器的函数名称,对应的属性值即是该校验器所需的表达式参数。

v.define("ruleName", {
    validator1: expression1,
    validator2: expression2,
    // ...
    validatorN: expressionN
});

如果rule不是对象类型(Object),jQuery Validator会将其转为对象{ ruleName: rule },也就是将ruleName视作校验器的名称。例如:

v.define("required", true)
// 等价于
v.define("required", { "required": true })

v.define("format", "number")
// 等价于
v.define("format", { "format": "number" })

// 也就是说,如果规则只应用了一个校验器,且该校验器的名称与规则名称相同,就可以这样速写

在jQuery Validator中,所有的校验规则定义存储在两个地方:

  • V.fn.rules对象用于存放全局的校验规则定义,所有实例可用;
  • v.rules对象用于存放当前实例(即v)自身的校验规则定义,只有当前实例可用。(v.rules对象默认不存在,首次定义实例规则时才会创建)。

如果同时存在同名的实例校验规则和全局校验规则,jQuery Validator将优先引用实例校验规则。

作为jQuery Validator的原型方法,define()一般在实例上调用。不过考虑到预定义全局校验规则时,可能还没有创建任何实例,因此define()也支持直接在原型上直接调用,即:V.fn.define(),此时无论global参数是省略还是其他任意值,都会视其为true,并将校验规则定义到全局V.fn.rules上。

如果没有特殊需要,建议尽量将校验规则统一定义到全局上。

示例&说明

var v = new V(); // 创建一个jQuery Validator实例对象

// 为当前实例定义一个名为"hello"的校验规则
v.define("price", { 
	// 只要没有显式地指定required:false,则默认为 required:true,因此无需手动添加
	// required:true,
	format: "number",
	range: "[100,]"	
});

// 为当前实例定义一个名为"hello"的校验规则
v.define("test", {
	length: "[6,16]"
}, true);

// 一次性为当前实例定义多个校验规则
v.define({
	"beginTime": {
		"format": "date"
	},
	"required": true // 这里的true等价于 { required: true }
});

// 为全局(所有实例)定义一个校验规则
V.fn.define("idcard", {
	format: "idcard/?;[18,]"	
});

接下来,你就可以通过规则名称,直接引用上述规则定义了:

// 直接对单个值进行校验
var input = "12.50";
var result = v.validate(input, "price"); // 应用"price"规则进行校验

// 直接对单个表单元素进行校验
var $price = $("#price");
result = v.validate($price, "price"); // 应用"price"规则进行校验

// 直接对多个form表单元素进行校验
result = $("form").v({
	"#username": "required",
	"#idcard": "idcard",
	"#password": {
		length: "[6,20]" // 当然,你也可以直接动态指定规则对象
	}
});

// 指定在表单提交时进行校验
$("form").v("submit", {
	"#username": "required",
	"#idcard": "idcard"
});
4 0
我们认为: 用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。
CodePlayer技术交流群1CodePlayer技术交流群1

帮朋友打一个硬广告:

P2P网贷系统(Java版本) 新年低价大促销,多年P2P技术积累,系统功能完善(可按需定制,可支持第三方存管、银行存管),架构稳定灵活、性能优异、二次开发快速简单。 另可提供二次开发、安装部署、售后维护、安全培训等一条龙服务。

外行看热闹,内行看门道。可以自信地认为,在系统设计上,比市面上的晓风、迪蒙、方维、绿麻雀、国融信、金和盛等P2P系统要好。
深圳地区支持自带技术人员现场考察源代码、了解主要技术架构,货比三家,再决定是否购买。

也可推荐他人购买,一旦完全成交,推荐人可获得实际售价 10% 的返现。
有意向者,详情请 点击这里 联系,工作时间立即回复。