Невозможно решить эту проблему с помощью стандартных событий: перед отправкой события сработал метод «validate» Сводка проверки отсутствует на странице, а callint «validate» останавливает отправку события (если у вас есть какие-либо ошибки причины). *
Что я сделал, так это редактирование "jquery.validate.unobtrusive.js". шаги:
1) В файле "jquery.validate.unobtrusive.js" в
function onErrors
я добавил диспетчеризацию событий:
function onErrors(form, validator) {
// native code
jQuery("#submitErrorProxy").trigger(jQuery.Event("click")); // my event
}
2) Добавлен скрытый ввод в мою форму с id="submitErrorProxy"
3) добавлен контейнер div на месте, где должна отображаться сводка проверки.
<div class="form-line" id="validationSummaryContainer">
//validation summary should be moved here
</div>
4) Добавлен следующий метод Javascipt
$("#submitErrorProxy").click(function (e) {
$("#validationSummaryContainer").empty();
$(".validation-summary-errors").clone(true, true)
.appendTo("#validationSummaryContainer");
});
Где clone(true, true)
- создает копию выбранного элемента со всеми его дочерними элементами. И appendTo
используется вместо move
, поскольку исходное резюме проверки должно присутствовать в исходной форме.
5) Скрытый оригинальный контейнер ValidtionSummary.
<div class="form-line" style="visibility: hidden; height: 0px">
@Html.ValidationSummary(false)
</div>