【问题标题】:Jquery validate: errorPlacement not updating DOM until blur eventJquery validate:errorPlacement在模糊事件之前不更新DOM
【发布时间】:2010-06-29 16:21:57
【问题描述】:

我有一个自定义 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 的 id 的位不会触发,直到我点击远离焦点元素或 tab 离开。

errorPlacement 触发太快而无法响应还是我遗漏了什么?

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    不用担心,我发现了问题:我在中间有几行顺序错误,所以事件总是延迟触发!有时很难只见树木不见森林!

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 2011-06-22
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      相关资源
      最近更新 更多