2010-08-27 6 views
0

J'essaie d'ajouter une validation sur mon formulaire. J'utilise des contrôles AJAX dans mes champs de formulaire. Lorsque je supprime le panneau de mise à jour et le contrôle AJAX, ma validation commence à fonctionner, mais lorsque je conserve les deux éléments ensemble, ma validation ne fonctionne pas. Comment pourrais-je les faire travailler ensemble?Comment faire fonctionner javascript avec Ajax UpdatePanel

<script type="text/javascript"> 

    function Validate() { 
     var QuestionTextArea = document.getElementById("ctl00_ctl00_cphBody_midbox_fvInsert_txtQuestion"); 

     varError = ""; 
     if (!IsTextBoxEmpty(QuestionTextArea, "\nQuestion Text Area not be Empty.")) { 
      alert(varError); 
      document.getElementById("ctl00_ctl00_cphBody_midbox_fvInsert_txtQuestion").focus(); 
      return false; 
     } return true; 
    } 
</script> 



    <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
      <ContentTemplate> 

      <asp:TextBox ID="txtQuestion" runat="server" MaxLength="1000" Columns="50" Rows="5" Style="width: 380px; 
      float: none" Text='<%# Bind("Description") %>' TextMode="MultiLine" /> 
      <AjaxControl:TextBoxWatermarkExtender runat="server" TargetControlID="txtQuestion" 
       WatermarkCssClass="water" WatermarkText="Type your Question Here."> 
      </AjaxControl:TextBoxWatermarkExtender> 


      </ContentTemplate> 
     </asp:UpdatePanel> 

Lorsque je supprime l'extension ajax et le panneau de mise à jour. Ma zone de texte est validée et lors de l'utilisation de UpdatePanel. Aucune fonction javascript créée par moi-même n'est appelée.

+0

Il serait plus simple pour nous de répondre à votre question lorsque vous postez des parties pertinentes de votre source. –

+0

s'il vous plaît essayer ma réponse .. –

Répondre

0

Un problème bien connu avec la première version des extensions ajax était de casser les validateurs. ScottGu même blogué sur la solution pour ajouter les noeuds folowing sous <system.web><controls><pages> dans votre web.config:

<tagMapping> 
    <add tagType="System.Web.UI.WebControls.CompareValidator" 
     mappedTagType="Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0"/> 
    <add tagType="System.Web.UI.WebControls.CustomValidator" 
     mappedTagType="Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0"/> 
    <add tagType="System.Web.UI.WebControls.RangeValidator" 
     mappedTagType="Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0"/> 
    <add tagType="System.Web.UI.WebControls.RegularExpressionValidator" 
     mappedTagType="Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0"/> 
    <add tagType="System.Web.UI.WebControls.RequiredFieldValidator" 
     mappedTagType="Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0"/> 
    <add tagType="System.Web.UI.WebControls.ValidationSummary" 
     mappedTagType="Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0"/> 
</tagMapping> 
1

Un UpdatePanel remplace complètement le contenu du panneau de mise à jour sur une mise à jour .
Cela signifie que les événements auxquels vous êtes abonné ne sont pas souscrits car il y a de nouveaux éléments dans ce panneau de mise à jour.
réponse complète here

Dans votre ou MasterPage, mettez le script suivant

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

    function EndRequestHandler(sender, args) 
    { 
    Validate(); 
    } 
</script> 
Questions connexes