У меня есть пользовательская функция errorPlacement, которая обновляет отдельный контейнер сообщений с помощью пользовательского способа отображения сообщений об ошибках.
Как часть формы, которую я проверяю, у меня есть достаточное количество вводатекстовые поля для проверки (подумайте, что строки чисел проверяются по какому-либо результату), и как часть этого нужно, чтобы сообщения об ошибках отображались только один раз в моем пользовательском контейнере.
Мой код выглядит так:
errorPlacement: function(errorMessageElement, field) {
if(errorMessageElement[0].innerHTML != "") {
if(!$("#alertbar ul li.error").length) { window.scrollTo(0,0); }
var errorMessageText = errorMessageElement[0].innerHTML;
var errorLine = errorMessageElement.attr('for').substr(0,4);
var countIdenticalLineMessages = $("#alertbar ul li[id~='" + errorLine + "']:contains('" + errorMessageText + "')").length;
var errorMessageId = "error-" + errorMessageElement.attr('for');
if (countIdenticalLineMessages < 1) {
if(!$("#alertbar ul li[id='" + errorMessageId + "']").length) {
$('#alertbar ul').append("<li id='" + errorMessageId + "' class='error' />");
}
var fieldErrorContainer = $("#alertbar ul li[id='" + errorMessageId + "']");
var errorContainerHTML = "<span class='hide'>Error - <\/span>" + errorMessageElement[0].innerHTML;
fieldErrorContainer.html(errorContainerHTML);
} else {
var newErrorLineId = "lineerror-" + errorMessageElement.attr('for').substr(0,4);
if(!$("#alertbar ul li[id='" + newErrorLineId + "']").length) {
// the below line doesn't fire till somewhere else on the page is clicked.
$("#alertbar ul li[id='" + errorMessageId + "']").attr("id", newErrorLineId);
}
var currentLineList = [];
if($("#alertbar").data(errorLine)) { currentLineList = $("#alertbar").data(errorLine); }
if(currentLineList.indexOf(errorMessageElement.attr('for')) == -1) { currentLineList.push(errorMessageElement.attr('for')) };
$("#alertbar").data(errorLine, currentLineList);
}
CoreErrorHandling.updateErrorSummary();
};
}
Но бит, который переключает идентификатор ошибки линии li, не запускается до тех пор, пока я не нажму на удаленный элемент или вкладку.
Слишком быстрое срабатывание errorPlacement дляответить или я что-то упустил?