Я столкнулся с подобной проблемой, я решил использовать свойство options.ignore.
http://docs.jquery.com/Plugins/Validation/validate#toptions
$("form").validate({
rules: {
"hard": {word_count:10}, // No more than 10 words
"soft_and_hard": {word_count:[30,10]} // No more than 40 words
},
ignore: ".error-okay"
});
Я использовал собственный валидатор для подсчета слов. Было решено, что мы должны отобразить ошибку после X слов (количество слов, которое они запрашивали), и не позволять отправлять форму, если у них есть X + T слов. Когда между словами X и X + T было написано, я бы добавил к элементу класс «error-okay» (где «.error-okay» - это то, что я передал в качестве параметра игнорирования).
jQuery.validator.addMethod("word_count", function(value, element, max) {
var tolerance = 0;
if (max instanceof Array){
tolerance = max[1];
max = max[0];
}
var typedWords = jQuery.trim(value).split(' ').length;
if(typedWords <= max + tolerance) $(element).addClass("error-okay");
else $(element).removeClass("error-okay");
return (typedWords <= max);
}, function(max, ele){
var tolerance = "";
if (max instanceof Array){
tolerance = "<br/>Definitly no more than " + ( max[0] + max[1] ) + " words.";
max = max[0];
}
return "Please enter " + max +" words or fewer. You've entered " +
jQuery.trim($(ele).val()).split(' ').length + " words." + tolerance;
});
Если у вас есть несколько проверок на поле, вам, вероятно, лучше написать функцию invalidHandler, возможно, комбинируя ее с добавленными классами, как я использовал (например: "word-count-okay").