Чтобы ответ Дарина сработал, я изменил следующую строку:
$.validator.unobtrusive.parse(selector);
К этому:
$(selector).find('*[data-val = true]').each(function(){
$.validator.unobtrusive.parseElement(this,false);
});
Вот полный пример:
(function ($) {
$.validator.unobtrusive.parseDynamicContent = function (selector) {
<b><i>// don't use the normal unobstrusive.parse method
<del>// $.validator.unobtrusive.parse(selector);</del>
// use this instead:
$(selector).find('*[data-val = true]').each(function(){
$.validator.unobtrusive.parseElement(this,false);
});
</i></b>
//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)
достаточно для проверки динамически загружаемого контента