Независимо от наследования, NH может отображать разные типы в одну и ту же таблицу. Я сделал это, хотя и без наследства.
Вы должны быть в состоянии удалить эту строку из переопределения NodeEntityLite
и добиться ее:
mapping.UseUnionSubclassForInheritanceMapping();
Если это окажется неудачным, вам, возможно, придется настроить автоподстановку дальше. Это, безусловно, возможно.
Вы найдете документацию для meta опции в http://docs.jquery.com/Plugins/Validation/validate#toptions
Если Вы хотите отобразить ошибки около исходных данных, И в отдельном ошибочном контейнере необходимо будет переопределить errorPlacement
обратный вызов.
От Вашего примера:
...
courriel_in: "ERROR",
userdigit: "ERROR"
}
,errorContainer: container
,errorPlacement: function(error, element){
var errorClone = error.clone();
container.append(errorClone);
error.insertAfter(element)
}
// We don't need this options
//,errorLabelContainer: $("ol", container)
//,wrapper: 'li'
//,meta: "validate"
});
...
error
параметр является объектом jQuery, содержащим a <label>
тег. element
параметр является входом, который привел проверку к сбою.
С вышеупомянутым кодом ошибочный контейнер не очистит ошибки, потому что он содержит клонированную копию. Легко решить это, если jQuery дает "скрыть" событие, но это не существует. Давайте добавим скрыть событие!
Мы добавляем совет для скрыть метода:
jQuery.aop.before({target: jQuery.fn, method: "hide"},
function(){
this.trigger("hide");
});
Мы обязываем скрыть событие скрывать клонированную ошибку:
...
,errorPlacement: function(error, element){
var errorClone = error.clone();
container.append(errorClone);
error.insertAfter(element).bind("hide", function(){
errorClone.hide();
});
}
...
Попробуйте
Я удалил бы errorContainer и затем прервал бы проверку на обратной передаче и там добавил бы контейнерную ошибку вручную как это:
$("#frmEnregistrer").bind("invalid-form.validate", function(e, validator) {
var err = validator.numberOfInvalids();
if (err) {
container.html("THERE ARE "+ err + " ERRORS IN THE FORM")
container.show();
} else {
container.hide();
}
}).validate({ ... })
Я не знаю, предоставляет ли плагин проверки возможность для этого, но можно, вероятно, использовать стандартный jQuery для достижения того, что Вы хотите. Удостоверьтесь, что Вы - контейнер, первоначально скрыт, путем установки стиля отображения ни на один:
<div id="container" style="display:none;"></div>
Затем Вы можете сцепление onsubmit событие к форме, которая сделает контейнер видимым, как только попытка предпринята для представления формы:
jQuery('#formId').onsubmit(function() {
// This will be called before the form is submitted
jQuery('#container').show();
});
Надо надеяться, объединение этого с Вашим существующим кодом должно добиться цели.
Сначала ваш контейнер должен использовать идентификатор вместо класса .. (я предполагаю, что идентификатор - «containererreurtotal»)
Затем попробуйте это ..
$().ready(function() {
$('div#containererreurtotal').hide();
// validate signup form on keyup and submit
$("#frmEnregistrer").validate({
errorLabelContainer: "#containererreurtotal",
wrapper: "p",
errorClass: "error",
rules: {
nickname_in: { required: true, minLength: 4 },
prenom_in: { required: true, minLength: 4 },
nom_in: { required: true, minLength: 4 },
password_in: { required: true, minLength: 4 },
courriel_in: { required: true, email: true },
userdigit: { required: true }
},
messages: {
nickname_in: { required: "Nickname required!", minLength: "Nickname too short!" },
prenom_in: { required: "Prenom required!", minLength: "Prenom too short!" },
nom_in: { required: "Nom required!", minLength: "Nom too short!" },
password_in: { required: "Password required!", minLength: "Password too short!" },
courriel_in: { required: "Courriel required!", email: "Courriel must be an Email" },
userdigit: { required: "UserDigit required!" }
},
invalidHandler: function(form, validator) {
$("#containererreurtotal").show();
},
unhighlight: function(element, errorClass) {
if (this.numberOfInvalids() == 0) {
$("#containererreurtotal").hide();
}
$(element).removeClass(errorClass);
}
});
});
I Я предполагаю, что вам нужен тег
вокруг каждой отдельной ошибки. Обычно я использую контейнер
Если вы укажете #containererreurtotal как отображение: нет; в вашем CSS, тогда вам не нужна первая строка в готовой функции ($ ('div # containererreurtotal'). hide ();)