c# - Required field Validation 和 Modal popup 同时发生

标签 c# asp.net ajax ajaxcontroltoolkit modalpopupextender

我有一个页面,其中有一些带有必填字段的文本框,我在同一页面中有一个提交按钮,我有一个模式弹出窗口。当我在没有填写文本框的情况下单击提交按钮时,会显示弹出窗口,并且还会在文本框附近显示错误消息。

<asp:TextBox ID="txt_ExpiresBy"
             class="datePicker" 
             runat="server" />
<asp:RequiredFieldValidator ID="req_ExpiresBy" 
                            ValidationGroup="SM" 
                            runat="server" 
                            ControlToValidate="txt_ExpiresBy" 
                            Text="*ExpiresBy is a required field.">
</asp:RequiredFieldValidator>
<asp:Button ID="btn_Send" 
            runat="server" 
            ValidationGroup="SM" 
            Text="Send" 
            CausesValidation="true" 
            OnClick="Send_Click" />                         
<asp:ModalPopupExtender ID="ModalPopupExtender1" 
                        TargetControlID="btn_Send" 
                        PopupControlID="Pnl_ForgotPass" 
                        runat="server">
</asp:ModalPopupExtender>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Panel ID="Pnl_ForgotPass" runat="server" 
           CssClass="cpHeader">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="Btn_ViewDash" runat="server" 
                        Text="View DashBoard" />
            <asp:Button ID="Btn_SeeMessages" runat="server" 
                        Text="Messages Page" />
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Panel>

我只想在填写所有必填字段后才显示 PopUp,但它显示在它之前。如何更改它。

最佳答案

您可以使用一些 javascript 来做到这一点。

首先从 ModalPopupExtender1 中删除 TargetControlID="btn_Send"

<asp:ModalPopupExtender ID="ModalPopupExtender1" 
                    PopupControlID="Pnl_ForgotPass" 
                    runat="server">

然后,在页面末尾添加这些脚本。

<script type="text/javascript">
  function ShowPopup() {
   $find('ModalPopupExtender1').Show();
  }

  function ValidateAndShowPopup() {
    if (Page_ClientValidate('SM')) {
        ShowPopup();
    }
  }
</script>

然后,将OnClientClick 事件绑定(bind)到新脚本。

<asp:Button ID="btn_Send" 
        runat="server" 
        ValidationGroup="SM" 
        Text="Send" 
        CausesValidation="true" 
        OnClientClick="ValidateAndShowPopup()"  />  

顺便说一句,OnClick="Send_Click" 事件因 ModalPopupExtender 的 TargetControlID 的行为而变浅,因此我将其删除。

关于c# - Required field Validation 和 Modal popup 同时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7739029/

相关文章:

c# - 不使用 System.Net.Sockets 时出现套接字错误

php - 如何阻止用户伪造请求?或者如何检测虚假请求?

c# - 使用 Automapper 没有映射错误 `Missing type map configuration or unsupported mapping`

asp.net - 如何在单击“赞”按钮时在新选项卡中打开 Facebook 登录窗口

c# - .NET core 3 : Order of serialization for JsonPropertyName (System. 文本.Json.序列化)

c# - :active pseudoclass with animations sometimes prevents postbacks in Chrome and IE

javascript - 如何使用 ajax 从 IMAP 服务器获取电子邮件

javascript - Php脚本自动被多次调用

c# - 使用 .NET Core 2 的 Azure WebJobs 失败并显示 "Invalid storage account"

c# - 如何在 Entity Framework 中将mysql中的char列类型作为字符串获取