2010-06-28 4 views
0

J'ai mis en place une validation sur un formulaire .Net avec le plugin JQuery, tout fonctionne sur le chargement de la page, mais après un retour, la validation cesse de fonctionner.Plugin de validation jQuery. La validation ne fonctionne pas après la publication

Ensuite, si je vide un champ requis et que j'essaie de soumettre, lorsque mes valideurs .Net détectent le côté client, la validation en direct sur les champs recommence à fonctionner.

Voici un petit échantillon de code qui reproduit le problème:

<script language="javascript"> 
    $(document).ready(function() { 
     ValidateElements(); 
    }); 

    function ValidateElements() { 
      jQuery.validator.messages.required = " "; 
      jQuery.validator.messages.email = " "; 

      var rules = {}; 
      rules[$("#<%=TxtInvoiceName.ClientID%>").attr("name")] = { 
       required: true 

      }; 

      $('form').validate({ 
       rules: rules, 
       success: function (label) { 
       }, 
       errorPlacement: function (label) { 

       } 

      }); 

      $("#MainForm").validate().form(); 
     } 
</script> 

<style> 
    input.error { 
    border: 1px solid red; 
    } 
</style> 

<form id="MainForm" runat="server"> 
<div> 
    <asp:TextBox runat="server" ID="TxtInvoiceName" Text="" /> 
       <asp:RequiredFieldValidator ID="RequiredFieldInvoiceName" runat="server" ErrorMessage="" 
        Display="Dynamic" ControlToValidate="TxtInvoiceName"></asp:RequiredFieldValidator> 
       <asp:Label runat="server" ID="LblTxtInvoiceNameValidate" AssociatedControlID="TxtInvoiceName">&nbsp;&nbsp;&nbsp;</asp:Label> 
       <asp:Button runat="server" Text="PostBack" OnClick="PostBack" /> 
</div> 
</form> 

quelqu'un Hope peut me montrer ce que im faire le mal.

Répondre

0

J'ai modifié vos ValidateElements fonctionnent un peu, essayez ceci:

 function ValidateElements() { 
       jQuery.validator.messages.required = " "; 
       jQuery.validator.messages.email = " "; 

       var rules = {}; 
       rules[$("#<%=TxtInvoiceName.ClientID%>").attr("name")] = { 
        required: true 

       }; 

       var $form = $('#MainForm'); 
       $form.validate({ 
        rules: rules, 
        success: function (label) { 
        }, 
        errorPlacement: function (label) { 

        } 

       }); 

       // whenever an input element's blur event fires, 
       // revalidate the form. do this because the asp.net 
       // validators use this behavior 
       $form.find(':input').blur(function() { 
        $form.valid(); 
       }); 

        // revalidate the form on submit. 
        // better approach because it requires less form revalidation 
        // on the client side, but it won't be in "synch" with the 
        // asp.net client side validation 
//    $('#<%= Button1.ClientID %>').click(function() { 
//     return $form.valid(); 
//    }); 
      } 
1

Il vous suffit d'ajouter un petit script sur votre page pour remplacer toutes les règles de validation après un post retour

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
function EndRequestHandler(sender, args) { 
    ValidateElements(); 
} 

Cela va remettre vos règles de validation pour le prochain formulaire de soumission.

Questions connexes