Как заставить JavaScript работать вместе с Ajax UpdatePanel - PullRequest
0 голосов
/ 27 августа 2010

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

<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>

Когда я удаляю ajax extender и панель обновления.Мое текстовое поле проверяется и при использовании UpdatePanel.Никакая созданная мной функция javascript не вызывается.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

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

На вашей странице или в MasterPage поместите следующий скрипт

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

  function EndRequestHandler(sender, args)
  {
    Validate(); 
  }   
</script>
0 голосов
/ 24 февраля 2011

Хорошо известной проблемой с первой версией расширений ajax было нарушение работы валидаторов.ScottGu даже написал в блоге о решении добавить следующие узлы под <system.web><controls><pages> в ваш 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...