JQuery Validator с Сводка ошибок внутри панели обновления ASP.NET - PullRequest
0 голосов
/ 31 марта 2011

Интересно, мог бы кто-нибудь помочь мне с проблемой, которая беспокоила меня в течение некоторого времени.

Я хочу включить проверку jQuery и сводку ошибок в панель обновлений на моей странице.Однако я обнаружил, что, когда div с краткой информацией об ошибках находится внутри панели обновлений, после первой обратной передачи, эта сводка больше не отображается - однако jQuery все еще проверяет форму и предотвращает обратную передачу, если не выполнены условия, которые я установил.

Чтобы уточнить, я испытываю следующее:

  1. Первая загрузка страницы, попытка отправить страницу без указания подробностей -> повторная публикация запрещена, и сводка ошибок отображается какожидается.

  2. Заполните поля имени и фамилии, нажмите «Отправить» -> страница правильно отправлена ​​на сервер.

  3. Теперь пусто либов поле «Имя» или «Фамилия» нажмите «Отправить» -> страница не отправляется обратно на сервер, однако сводка ошибок не отображается для пользователя.

  4. Заполните поле «Имя и фамилия» ->страница корректно отправлена ​​обратно

Если вы перемещаете div с краткой ошибкой (div class="error-container") заПанель обновления страницы работает как положено.К сожалению, я не могу сделать это с моим дизайном.

Интересно, сталкивался ли кто-нибудь с этой проблемой, и нашли ли вы решение этой проблемы?

Чтобы воссоздать мою проблему, вы можете использовать следующий код:

TestValidator.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="TestValidator.aspx.vb" Inherits="TestValidator" %>

Имя:Фамилия:
                $(document).ready(function () {

                    load();

                    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
                        load();
                    });

                });

                function load() {

                    $("#<%= Me.Page.Form.ClientId %>").validate({
                        errorLabelContainer: $("ul", $('.error-container')),
                        wrapper: 'li'
                    });
                }

                function checkForm() {
                    return $("#<%= Me.Page.Form.ClientId %>").valid();
                }


            </script>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

TestValidator.aspx.vb

Partial Class TestValidator
Inherits System.Web.UI.Page

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
    Me.btnSubmit.Text = "Submitted at: " & Now.ToString
End Sub

Конечный класс

Спасибо, Дэвид

1 Ответ

0 голосов
/ 31 марта 2011

Вот как я получаю свои функции jQuery для запуска каждой загрузки страницы внутри моих панелей обновления:

// Attach our single function that will call all of the functions 
// we want to run OnLoad to the Sys.Application.add_load handler.

if (Sys != undefined && Sys.Application) { 
    Sys.Application.add_load(callOnLoadFunctions); 
} else { 
    window.onload = callOnLoadFunctions; 
}

function callOnLoadFunctions() {

    // Add all the functions to be called

    load();            // your method
    function1();       // some other function
    function2();       // another function

}

Я поместил все свои js внизу страницы, и это обычно упоминается во внешнем js-файле сразу после ссылок на jQuery и плагины.

...