Validación de jQuery: cómo validar un campo con dos reglas XOR
Tengo un campo que puede contener correo electrónico o móvil (en mi caso, el móvil es de 8 dígitos). Ya probé dos enfoques (ambos ejemplos no funcionan, porque el 'elemento' no tiene un método de validación):
Primer enfoque: crear un método personalizado y hacer ambas validaciones allí, pero luego tengo que crear mi propio correo electrónico y la validación móvil. No pude encontrar una manera de reutilizar las reglas de validación de jQuery con nuevos métodos. Esto es lo que me gustaría tener:
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");
Segundo enfoque: crear reglas dependientes. Y también en este caso no pude encontrar una forma de reutilizar las reglas de validación de jQuery.
{ 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 } });
}
}
}
}
}
}