I have one field which can contain email or mobile (in my case mobile is 8 digits).
I already tried two approaches (both examples doesn’t work, because ‘element’ do not have validate method):
First approach: create custom method and do both validations there, but then I have to create my own email and mobile validation – I couldn’t find a way how to reuse jQuery validation rules in new methods. This is what I’d like to have:
jQuery.validator.addMethod("mobileoremail", function(value, element) {
return this.optional(element) ||
element.validate({ rules: { digits: true, rangelength: [8, 8] } }) ||
element.validate({ rules: { email: true } });
}, "Invalid mobile or email");
Second approach: create dependent rules. And also in this case I couldn’t find a way how to reuse jQuery validation rules.
{ myRules: {
rules: {
user: {
required: true,
email: {
depends: function(element) {
return !element.validate({ rules: { mobile: true } });
}
},
mobile: {
depends: function (element) {
return !element.validate({ rules: { email: true } });
}
}
}
}
}
}
How about the following validation method…
Then we could set up the form validation as follows…
See it in action here http://jsfiddle.net/eJdBa/