您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2016年06月02日 03:00

原创 jQuery Validator before 前置处理器

1783 次浏览 读完需要≈ 6 分钟

内容目录

jQuery Validator的before前置处理器用于在每次执行当前规则校验前进行前置处理,并根据前置处理的返回结果决定是否执行本次校验。

此外,你还可以在处理器中动态修改本次校验的规则。

语法

jQuery Validator 1.0 新增

// 在校验规则对象中指定该属性
before: handler

参数

参数 描述
handler Function类型指定的前置处理函数。

如果在校验规则中指定了前置处理器before,jQuery Validator会在执行输入预处理和校验之前调用该处理器函数。

在调用函数时,jQuery Validator会为其传入如下所示的参数:

before: function(value, context){
	// value 表示当前表单输入
	// context 表示本次校验的上下文对象
	// this 指向当前jQuery Validator实例

	// 如果返回false,则表示不进行本次校验
}

如果前置处理函数handler返回false,则表示跳过本次校验。

示例&说明

以如下HTML表单为例:

<form action="https://codeplayer.vip/">
	<div>
		<label>用户类型</label>:
		<select id="userType" name="userType">
			<option value="">==请选择==</option>
			<option value="1">普通用户</option>
			<option value="2">客服</option>			
		</select>
	</div>
	<div>
		<label>QQ号码</label>:
		<input id="QQ" name="QQ" type="text" >
	</div>
	<div>
		<label>年龄</label>:
		<input id="age" name="age" type="text" >
	</div>
	<input type="submit" value="提交" />
</form>

我们可以使用before前置处理器完成如下校验:运行代码

// 在表单提交时执行校验
$("form").v("submit", {
	"#userType": "required",
	"#QQ": {
		// 只有客服必须输入QQ号码,其他用户类型无需校验
		before: function(value, context){
			return $("#userType").val() == "2"; 
		},
		format: "number",
		length: "[5,10]"
	},
	"#age": {
		// 如果是客服,必须年满18岁,其他用户类型无限制
		before: function(value, context){
			context.rule.range = $("#userType").val() == "2" ? "[18,]" : "[0,]";
		},
		format: "number",
		range: "[18,]"
	}
});
  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论

打开导航菜单