0
我有一個自定義的errorPlacement函數,它使用顯示錯誤消息的自定義方式更新單獨的消息容器。Jquery驗證: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();
};
}
但直到我從聚焦元素,或選項卡中單擊之遙切換行錯誤裏的ID位在不觸發。
errorPlacement發射得太快以至於無法響應,或者我錯過了什麼?