Я думаю, вам придется использовать errorPlacement
, но вы можете использовать несколько приемов, чтобы каждый раз получать ошибку в согласованном месте среди групп:
$("#test-form").validate({
groups: {
username: "fname lname",
range: "min max"
},
errorPlacement: function ($error, $element) {
var elementName = $element.attr("name"),
lastInGroup = $.map(this.groups, function(fields, name) {
var fieldsArr;
if (fields.indexOf(elementName) >= 0) {
fieldsArr = fields.split(" ");
return fieldsArr[fieldsArr.length - 1];
} else {
return null;
}
})[0];
if (lastInGroup) {
$error.insertAfter($("input[name='" + lastInGroup + "']"));
} else {
$error.insertAfter($element);
}
}
});
По сути, получите доступ к определенному вами объекту groups
и найдите последнее поле в каждой группе. Прикрепите ошибку после этого поля.
Пример: http://jsbin.com/acenic/