这几天在学习使用一个jQuery的验证插件:jQuery.Validate 。这个插件很好用也很灵活,但是对message处理这块刚开始很不适应,因为我们以前做项目时都是使用一个共同的message模板,然后传入参数来达到message复用的目的。
之前在网上的例子中一般都是一个验证对象对应一个message,比如:
代码
$(
'
#submitForm
'
).validate({
/* 设置验证规则 */
rules: {
username: {
required: true ,
},
phone:{
required: true ,
}
},
/* 设置错误信息 */
messages: {
username: {
required: " 请输入您的用户名 "
},
phone:{
required: " 请输入您的联系电话 "
}
}
});
/* 设置验证规则 */
rules: {
username: {
required: true ,
},
phone:{
required: true ,
}
},
/* 设置错误信息 */
messages: {
username: {
required: " 请输入您的用户名 "
},
phone:{
required: " 请输入您的联系电话 "
}
}
});
对于这种必须输入check的message而言只是控件名称不一样而已,每次都需要重复定义很麻烦。可以简化为:
代码
$(
'
#submitForm
'
).validate({
/* 设置验证规则 */
rules: {
username: {
required:[ true , ' 用户名 ' ]
},
phone:{
required:[ true , ' 联系电话 ' ]
}
},
/* 设置错误信息 */
messages: {
required: " 请输入您的{1} "
}
});
/* 设置验证规则 */
rules: {
username: {
required:[ true , ' 用户名 ' ]
},
phone:{
required:[ true , ' 联系电话 ' ]
}
},
/* 设置错误信息 */
messages: {
required: " 请输入您的{1} "
}
});
其中 {1} 表示参数数组中的第二个参数(第一个参数是那个true,呵呵), {1} 也可以写成 ${1}
解释一下:
required:[true,'用户名'] // 相当于声明使用required验证规则,并且传入了一个参数数组, 第一个参数是true,第二个参数是'用户名'
messages: {
required: "请输入您的{1}" // 设置了验证失败时显示的Message, {1}代表使用传入的第二个参数显示。
}
这样只用定义一次message,以后传不同的参数进去就行了。多个参数时也是一样的,定义验证规则的时候给参数数组中添加多项,然后定义message时 通过{N}来指定替换参数列表中的第几个参数。(数组下标从0开始,所以N要比实际顺序小1位)
自己看了插件代码明白可以这样用之后记录下来,希望能帮到跟我有同样问题的朋友。