magento结合jquery validation实现xor验证

在做magento的中文网站开发中,在新增收货地址或者使用新地址结算里经常碰到一个问题,就是“手机号或者电话必填”。这里我把magento原生的validation给干掉了,使用的jquery validation。

jquery验证必填的格式如下,以手机号码必填,电话号码必填为例

1
2
3
4
5
6
7
8
rules: {
'billing[mobile]': {
required: true
},
'billing[telephone_number]': {
required: true
},
},

注意这里的billing[mobile],billing[telephone_number]是input框的name属性,刚开始使用jquery validation经常在这里犯错,那么新的问题来了,怎么验证手机号或者电话必填,填了一个即可,jquery validation似乎不支持类这种导或判断(xor)

谷歌了一把,jquery validation xor,链接在最后面,最终代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rules: {
'billing[mobile]': {
required: function(element) {
return $("#telephone_number").val() == '';
}
},
'billing[telephone_number]': {
required: function(element) {
return $("#mobile").val() == '';
}
}
},
messages: {
'billing[mobile]': {
required: "手机或电话号码必填",
},
'billing[telephone_number]': {
required: "手机或电话号码必填",
}
},

稍微解释一下,telephone number值为空里mobile必填,同理mobile为空时,telephone number必填。原文里面是用的$(“#mobile”).is(‘:empty’);我这里作了一点点修改

参考:jQuery Validation - Two fields, only required to fill in one