2010-09-13 5 views
10

Я пытаюсь использовать плагин jquery validation, но моя форма находится в панели обновления. Поэтому даже после применения проверки на отправке формы она проверяет и показывает требуемое сообщение в течение едва 2 секунд, а затем отправляет форму.
Какое обходное решение для этого?Jquery Validation And Update Panel Together

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

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

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

+0

Какой плагин проверки? – Hawxby

+0

@Hawxby: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – naveen

+0

Панели обновления - блестящая игрушка для ничего не подозревающего нового парня. Я настоятельно рекомендую вам открыть AJAX :) (у меня есть ответ и вытащите код из того места, где я намеренно потерял его, как только обнаружил AJAX) –

ответ

0

Вы должны возвратить ложь и остановить событие кипящий на onsubmit, что-то вроде этого:

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

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

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

0

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

Это то, что я хотел бы сделать:

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

  2. Если проверка не мешает выполнение событий по умолчанию (барботирования) либо возвращающегося false вызова preventDefault() или оба, то оно должно быть изменено на достаточно работать с ASP.Net WebForms.

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

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

О, черт возьми. Просто сделайте поиск Google по этому вопросу и включают в себя только StackOverflow результаты: jQuery validation webforms site:stackoverflow.com

2

Если вы используете менеджер скриптов, Вам понадобится 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

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