Jquery validate: errorPlacement не обновляет DOM до события размытия - PullRequest
0 голосов
/ 29 июня 2010

У меня есть пользовательская функция 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 дляответить или я что-то упустил?

1 Ответ

0 голосов
/ 24 сентября 2010

Не беспокойтесь, я нашел проблему: я получил несколько строк в неправильном порядке прямо посередине, поэтому событие всегда начиналось поздно!Иногда трудно увидеть дрова для деревьев!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...