Кажется, вы присваиваете compareRxDates()
свойству required
, которое должно быть логическим - истина или ложь, сообщая плагину, должно ли поле быть обязательным или нет. Вместо этого вы должны указать обратный вызов в свойстве depends
.
Пример:
$("form").validate({
rules: {
InputPrescriptionStartDate: {
depends: function(element) {
compareRxDates();
}
}
},
// etc
Из документации:
Каждое правило может быть указано как имеющее свойство зависимости для применения правила только в определенных условиях
ОБНОВЛЕНИЕ: (предлагая лучшее, многоразовое решение, с примером)
Вы можете добавить свои собственные методы проверки, которые вы можете использовать в других полях, например:
jQuery.validator.addMethod("shouldBeGreaterThan", function(value, currentElement, argumentElement) {
return value > $(argumentElement).val();
}, "* This field should be greater than the other");
$("form").validate({
rules: {
InputPrescriptionStartDate: {
shouldBeGreaterThan: $("#InputLastPrescriptionFillDate")
}
}
});
Функция addMethod
получает 3 параметра. Имя метода, функция оценки и сообщение, которое будет отображаться в случае, если оно оценивается как false
(может быть переопределено для отдельных элементов). В приведенном выше примере я создал метод проверки, который требует, чтобы элемент аргумента имел значение, которое должно быть больше текущего значения. Это можно легко изменить для работы с датами.
Вот jsfiddle с рабочим примером: http://jsfiddle.net/bZzrs/5/