Ваш вопрос - это то, что я пытался выяснить на какое-то время. Это то, что у меня есть до сих пор.
Я использую это для проверки единственного диапазона дат. Он принимает входные поля, как Params, а не даты:
jQuery.validator.addMethod("rangeDate", function(value, element, params) {
try {
var beforedate=$.datepicker.parseDate($(params[0]).datepicker('option','dateFormat'),$(params[0]).val());
var afterdate=$.datepicker.parseDate($(params[1]).datepicker('option','dateFormat'),$(params[1]).val());
var qdate=$.datepicker.parseDate($(element).datepicker('option','dateFormat'),value);
return this.optional(element) || (qdate >= beforedate && qdate<=afterdate);
} catch(err){
return false;
}
}, function(params){
return "Date must occur between " + $(params[0]).val() + ' and ' + $(params[1]).val();
}
);
и правило выглядит следующим образом:
rules:{
between_date: { dateCan: true,
rangeDate: {
depends: function(element) { //check that params exist
return $("input[name='before_date']").valid()
&& $("input[name='after_date']").valid();
},
param: ["input[name='before_date']", "input[name='after_date']"]
}
}
}
После экспериментов немного, я видел, что это возможно, чтобы иметь более одного rangeDate
правила для поля. Тем не менее, последний вызов переписывает результаты всех предыдущих вызовов rangeDate
для этого поля. Итак, думаю, что может работать, заключается в добавлении другого настраиваемого правила, которое принимает массив пар полей, который может быть подан в rangeDate
. Проблема с этим подходом заключается в том, что правило depends
для правила rangeDate
становится громоздким, так как вы получаете больше пар дат. Это особенно важно, если вам требуется только наличие одной пары, а не всех пар.
Конечно, если диапазоны дат не являются динамическими, проблема проще, потому что не требуется depends
. Просто перепишите rangeDate
, чтобы принять даты, а не поля, и написать правило оболочки, чтобы принять массив пар дат.
Если вы нашли решение проблемы, мне бы очень хотелось ее увидеть. Надеюсь, он будет более изящным, чем мой.
Вы поняли это? – Silkster
Не бойтесь, у меня не было времени, чтобы заглянуть в него, начиная с размещения вопроса. Но мне нужно кое-что выяснить. – amunds
Эти значения жестко закодированы в форму или меняются? Если это так, у меня может быть решение. –