Javascript проверка правильности страницы - PullRequest
8 голосов
/ 11 марта 2009

На моей кнопке отправки я хотел бы, чтобы OnClick показывал панель «Пожалуйста, подождите» и скрывал кнопку, ЕСЛИ валидаторы не говорят, что что-то недопустимо - тогда мне нужно, чтобы кнопки по-прежнему явно отображались. В противном случае у меня есть сводка проверки с ошибками, и я не могу отправить ее снова.

В большинстве статей, которые я нахожу об этом, я хочу использовать функцию Page_ClientValidate (), чтобы сказать странице, что нужно проверить себя, но для меня это не определено, как и переменная Page_IsValid. Вот функция, которую я пытаюсь использовать - что мне не хватает?:

function PleaseWaitShow() {
    try {
        alert("PleaseWaitShow()");

        var isPageValid = true;

        // Do nothing if client validation is not active
        if (typeof(Page_Validators) == "undefined") {
            if (typeof(Page_ClientValidate) == 'function') {
                isPageValid = Page_ClientValidate();
                alert("Page_ClientValidate returned: " + isPageValid);
                alert("Page_IsValid=" + Page_IsValid);
            } else {
                alert("Page_ClientValidate function undefined");
            }
        } else {
            alert("Page_Validators undefined");
        }

        if(isPageValid) {
            // Hide submit buttons
           document.getElementById('pnlSubmitButton').style.visibility = 'hidden';
           document.getElementById('pnlSubmitButton').style.display = 'none';

           // Show please wait panel
           document.getElementById('pnlPleaseWait').style.visibility = 'visible';
           document.getElementById('pnlPleaseWait').style.display = 'block';
       } else {
           alert("page not valid - don't show please wait");
       }
   } catch(er) {
       alert("ERROR in PleaseWaitShow(): " + er);
   }
}

Ответы [ 6 ]

8 голосов
/ 24 апреля 2009

изменить эту строку "if (typeof (Page_Validators) ==" undefined ")" на if (typeof (Page_Validators)! = "undefined")

5 голосов
/ 11 марта 2009

Согласно разделу «Клиентский API» на странице « Проверка ASP.NET в глубину »:

Page_IsValid | Логическая переменная | Указывает, является ли страница действительной в данный момент. Сценарии проверки постоянно обновляют эту информацию.

Действительно, наблюдая за этой переменной в FireBug на форме с включенной проверкой на стороне клиента ASP.NET, она обновляется, когда я заполняю детали формы (неправильно или правильно).

Очевидно, что если вы отключили клиентский скрипт в ваших валидаторах или сводке валидации, то эта переменная будет вам недоступна.

4 голосов
/ 31 августа 2012

Просто проверьте

if(Page_IsValid)
{
    //Yourcode
}

Это работает, если у вас есть валидаторы на странице, что исключает сводку валидации.

0 голосов
/ 29 июня 2009

На эту тему есть ветка на форуме ASP.Net: Кнопка, предотвращающая несколько нажатий

Вот решение (в коде позади):

private void BuildClickOnceButton(WebControl ctl)
{
    System.Text.StringBuilder sbValid = new System.Text.StringBuilder();
    sbValid.Append("if (typeof(Page_ClientValidate) == 'function') { ");
    sbValid.Append("if (Page_ClientValidate() == false) { return false; }} ");
    sbValid.Append(ctl.ClientID + ".value = 'Please wait...';");
    sbValid.Append(ctl.ClientID + ".disabled = true;");
    //GetPostBackEventReference obtains a reference to a client-side script function that causes the server to post back to the page.
    sbValid.Append(ClientScript.GetPostBackEventReference(ctl, ""));
    sbValid.Append(";");
    ctl.Attributes.Add("onclick", sbValid.ToString());
}
0 голосов
/ 20 марта 2009

Мне кажется, я нашел "своего рода" ответ.

Я все еще не могу определить, почему моя страница не будет идентифицировать "Page_ClientValidate ()" или "Page_IsValid" - эта часть все еще остается без ответа.

Однако я использую несколько валидаторов PeterBlum на странице, и они предоставляют «VAM_ValOnSubmit ()», который возвращает true / false. Так что это может быть решением. Возможно, мне просто нужно убедиться, что все валидаторы - это PeterBlum, чтобы поймать их всех.

Не самое лучшее решение, но лучше, чем я получил до сих пор. Я все еще открыт для ответов в части "Page_IsValid".

0 голосов
/ 11 марта 2009

Page_ClientValidate () не является какой-либо стандартной функцией JavaScript, которую я знаю о

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