Панель обновления конфликтует с проверкой jquery - PullRequest
0 голосов
/ 23 ноября 2011

Я использую проверку jQuery при отправке клика. Моя страница содержит два элемента div.

Проблема возникает, когда я помещаю оба блока в панель единого обновления, проверка перестает работать, ошибка показывает

Uncaught TypeError: Object [object Object] не имеет метода 'validate'

Когда комментируется панель обновления, все работает нормально, но с полной обратной передачей (чего я не хочу).

Я использовал почти все, что нашел в Интернете (noConflicts, Sys.WebForms.PageRequestManager.getInstance () и т. Д.)

Может кто-нибудь помочь мне больше?

Код:

Голова:

<script type="text/javascript" src="../../Javascript/Validators/jquery.validate.js"></script>
<script type="text/javascript">
    jQuery(document).ready
    (
      function () {
          jQuery("#btn_Save").live("click", function () {
              jQuery("#form1").validate
        (
          {
              rules: {
                  txtContactPerson: "required"
              },
              messages: {
                  txtContactPerson: " * Please enter Contact Person Name"
              }
          }
        );
          });
      }
    ); 
</script>          

Кузов:

два простых списка в панели обновления

1 Ответ

0 голосов
/ 23 ноября 2011

На самом деле вы можете использовать проверку jQuery с серверными формами. Но это стало хитро с UpdatePanel. Попробуйте подход ниже:

В шапке:

<script type="text/javascript">
     $(function () {
          $("#form1").validate(
          {
               rules: {
                    '<%= txtContactPerson.ClientID %>': "required"
               },
               messages: {
                    '<%= txtContactPerson.ClientID %>': " * Please enter Contact Person Name"
               }
          });
     })          
</script>

Сразу после элемента управления ScriptManager:

<script type="text/javascript">
     Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);

     function initializeRequestHandler(sender, args) {
          if (args.get_postBackElement().id == '<%= btn_Save.ClientID %>' && $("#form1").valid() !== true) {
               args.set_cancel(true);
          }
     }
</script>

Markup:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
     <ContentTemplate>
          <asp:TextBox runat="server" ID="txtContactPerson" />
          &nbsp;
          <asp:Button ID="btn_Save" runat="server" Text="Submit" />
     </ContentTemplate>
</asp:UpdatePanel>

Если вы хотите отключить асинхронную обратную передачу не только для btn_Save, просто удалите этот код: args.get_postBackElement().id == '<%= btn_Save.ClientID %>' &&

...