Панель проверки и обновления Jquery вместе - PullRequest
11 голосов
/ 13 сентября 2010

Я пытаюсь использовать плагин jquery validation , но моя форма находится на панели обновления Таким образом, даже после применения проверки при отправке формы, она проверяет и показывает требуемое сообщение в течение 2 секунд, а затем отправляет форму. Какой обходной путь для этого?

Я тоже это пробовал.

<asp:UpdatePanel ID="AddUserPanel" runat="server"
             ChildrenAsTriggers="false"
             UpdateMode="Conditional">

Но это, похоже, тоже не помогает.

Ответы [ 4 ]

3 голосов
/ 12 февраля 2011

Если вы используете менеджер скриптов, вам нужен код l33t, приведенный ниже:

  $(function () {
 //Code that runs before update panel is fired.

        //Listen for update panel
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        //Re-initialize jquery after an auto post back.
        function EndRequestHandler(sender, args) {
            //Do work after update panel fires.
        } 
    });

Таким образом, в основном у вас есть дублированный код, код вне EndRequestHandler () и внутри него.

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

Если я правильно помню, вы можете использовать обычную кнопку вместо кнопки asp:, которая не вызовет обратную передачу.Если это так, то вы можете использовать JavaScript для обновления UpdatePanel.

0 голосов
/ 11 февраля 2011

Asp.net WebForms использует функцию __doPostback(), которая отправляет вашу форму.

Вот что я бы сделал:

  1. Проверьте выполнение отправки формы, чтобы увидеть, все ли работает как положено, поэтому сначала происходит проверка (что я уверен, что это происходит, потому что вы получаете эти сообщения) и проверьте код каждой отдельной части.

  2. Если валидация не препятствует выполнению события по умолчанию (всплывающее сообщение), возвращая false вызова preventDefault() или оба, тогда его следует изменить для достаточной работы с веб-формами Asp.net.

  3. Если на фронте проверки все выглядит нормально, вам следует изменить функцию __doPostback(). Да, это звучит хакерски, но иногда такие вещи нужно делать. Скопируйте существующий код и добавьте дополнительную проверку. Ничего страшного.

Также проверьте этот Вопрос Stackoverflow .

О, черт. Просто выполните поиск Google по этому вопросу и включите только результаты stackoverflow: Сайт веб-форм проверки jQuery: stackoverflow.com

0 голосов
/ 05 февраля 2011

Вам нужно вернуть false и остановить всплывающее событие при отправке, что-то вроде этого:

$("form").submit(function (e) {
  e.preventDefault();
  return(false);
});

Однако я ничего не знаю об ASP, поэтому не знаю, поможет ли это в данном конкретном случае.

Возможно, вам нужно использовать .live или повторно подключить обработчик после загрузки содержимого этой панели, чтобы с ним связывались события onsubmit?

...