Хотя вы можете комбинировать регулярные выражения, как это делает Рейгель, вы также можете просто вызывать эти методы напрямую (в случае их изменения!), Например так:
$.validator.addMethod("dateISODE", function(value, element) {
return $.validator.methods.dateISO.apply(this, arguments)
|| $.validator.methods.date.apply(this, arguments);
}, "Please enter a valid ISO or German date");
Теперь у меня есть date
вместо dateDE
здесь, потому что в более новых версиях плагина dateDE
был удален . Теперь он находится в файле локализации , который просто переопределяет метод date
. Если вы используете старую версию, это нормально, просто придерживайтесь dateDE
.
Вы можете попробовать демо здесь
Обновление для комментариев: Более общая форма будет выглядеть следующим образом:
$.validator.addMethod("oneOf", function(value, element, params) {
for(p in params) {
if(params.hasOwnProperty(p) &&
$.validator.methods[p].apply(this, [value, element, params[p]]))
return true;
}
return false;
}, "Please enter a valid date");
Правила будут выглядеть так:
$("form").validate({
rules: {
dateFieldName: { oneOf: { dateISO:true, date:true } }
}
});
Вы можете попробовать демо здесь , для этого нужно любое количество функций валидатора и их запуск, по крайней мере, один должен вернуть true
, чтобы это было успешно.