Чтобы ответ Дарина работал, я изменил следующую строку:
$.validator.unobtrusive.parse(selector);
К этому:
$(selector).find('*[data-val = true]').each(function(){
$.validator.unobtrusive.parseElement(this,false);
});
Вот полный образец:
(function ($) {
$.validator.unobtrusive.parseDynamicContent = function (selector) {
// don't use the normal unobstrusive.parse method
// $.validator.unobtrusive.parse(selector);
// use this instead:
$(selector).find('*[data-val = true]').each(function(){
$.validator.unobtrusive.parseElement(this,false);
});
//get the relevant form
var form = $(selector).first().closest('form');
//get the collections of unobstrusive validators, and jquery validators
//and compare the two
var unobtrusiveValidation = form.data('unobtrusiveValidation');
var validator = form.validate();
$.each(unobtrusiveValidation.options.rules, function (elname, elrules) {
if (validator.settings.rules[elname] == undefined) {
var args = {};
$.extend(args, elrules);
args.messages = unobtrusiveValidation.options.messages[elname];
$('[name="' + elname + '"]').rules("add", args);
} else {
$.each(elrules, function (rulename, data) {
if (validator.settings.rules[elname][rulename] == undefined) {
var args = {};
args[rulename] = data;
args.messages = unobtrusiveValidation.options.messages[elname][rulename];
$('[name="' + elname + '"]').rules("add", args);
}
});
}
});
}
})($);
$.validator.unobtrusive.parse
внутренне вызывает метод parseElement, но каждый раз он отправляет параметру isSkip
значение true, поэтому с этим значением
if (!skipAttach) {
valInfo.attachValidation();
}
этот код в jquery.unobtrusive.js не прикрепляет проверку к элементу, и мы находим только данные проверки входных данных, которые изначально присутствовали на странице.
Примечание Ответ Дарина выше правильный, и вы можете найти в блоге, на который он ссылался, что многие люди решили проблему, используя код xhalent (опубликовано darin). почему это не сработало, выше моего понимания. Кроме того, вы можете найти множество сообщений, в которых рассказывается ты просто звонишь
$.validator.unobtrusive.parse(selector)
достаточно для проверки динамически загружаемого контента
person
Muhammad Adeel Zahid
schedule
12.05.2011