У меня есть пользовательская функция errorPlacement, которая обновляет отдельный контейнер сообщений с пользовательским способом отображения сообщений об ошибках.Jquery validate: errorPlacement не обновляет DOM до размытия событие
Как часть формы, которую я проверяю, у меня есть достаточное количество текстовых полей ввода для проверки (думаю, строки цифр проверяются на какой-то результат), и в качестве части этого требуется сообщение об ошибке только покажите один раз в моем пользовательском контейнере.
Мой код выглядит следующим образом:
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();
};
}
Но бит, который переключает идентификатор литий ошибки линии не стреляя, пока я нажимаю от сфокусированного элемента или вкладки прочь.
Быстрое срабатывание errorPlacement для ответа или я что-то упускаю?