【问题标题】:Vaidation in POpup Window is not working properly弹出窗口中的验证无法正常工作
【发布时间】:2015-01-02 12:35:54
【问题描述】:

我在验证项目中的弹出屏幕时遇到问题。我正在使用验证组来验证弹出窗口中的控件。我们的项目标准为未填充的控件显示红色前景。它在正常屏幕中工作但它是不能在弹出窗口中工作( ForeColor 颜色 Red )? 有什么办法可以解决这个问题吗? 单击弹出 div 将显示的同一窗口中的“btnExportLE”按钮。

<asp:Button ID="btnExportLE" runat="server" class="btnNew" Text="Export LE" OnClientClick="returnShowExpPopup();" />

CSS

.popups
{
    position: absolute;width: 550px; height: 430px;border-width: 0px;top: 240px;margin-left: 273px;
    background: #FFF;border-radius: 5px;box-shadow: 6px 6px 7px #4d4d4d;z-index: 10000100; border: 1px solid #CCCCCC;
}

JS函数

function ShowExpPopup()
{
document.getElementById('<%= dvExpPopUp.ClientID %>').style.display = "block";
document.getElementById("divBG").style.display = "block";
return false;
}

<div id="dvExpPopUp" runat="server" class="popups" style="display: none">
        <div class="popupTop">
            <table width="550px" style="height: 100%">
                <tr style="height: 10px;">
                    <td style="text-align: center; width: 510px;">
                        <asp:Label ID="Label1" runat="server" Text="Export LE" Font-Bold="true"></asp:Label>
                    </td>
                    <td style="text-align: right; width: 30px;">
                        <asp:LinkButton ID="lnkClose1" CssClass="lnkcancel" runat="server" ForeColor="Red"
                            OnClientClick="Clear();closeInfo();" Text=" X "></asp:LinkButton>
                    </td>
                </tr>
            </table>
        </div>
        <table width="550px" style="font: Arial; font-size: small;">
            <tr>
                <td width="10%">
                </td>
                <td width="25%">
                    <asp:Label ID="lblMandantCode" runat="server" Text="Mandant Code"></asp:Label>
                </td>
                <td colspan="3">
                    <asp:TextBox ID="txtMandantCode" runat="server" class="txtBox" Width="200px" TextMode="SingleLine"
                        MaxLength="3"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RVMandantCode" runat="server" ErrorMessage="*" ControlToValidate="txtMandantCode"
                        ForeColor="Red" ValidationGroup="V2"></asp:RequiredFieldValidator>
                </td>
                <td>
                </td>
            </tr>

            <tr>
                <td width="10%">
                </td>
                <td width="25%">
                </td>
                <td colspan="3">
                    <asp:ToolkitScriptManager ID="ToolkitScriptManager2" runat="server">
                    </asp:ToolkitScriptManager>
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                            <asp:Button ID="btnExport" runat="server" ValidationGroup="V2" Style="margin-bottom: 0px"
                                Text="Export" class="btnNew" OnClick="btnExport_Click" />
                            <asp:Button ID="btnExpClose" runat="server" Text="Close" class="btnNew" OnClientClick="Clear();closeInfo();"
                                OnClick="btnExpClose_Click" />
                                <br />
                            <asp:Label ID="lblResult" runat="server" Text="" class="errMsg"></asp:Label>
                            <asp:UpdateProgress ID="UpdWaitImage" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1">
                                <ProgressTemplate>
                                    <asp:Image ID="imgProgress" ImageUrl="Images/loader.gif" runat="server" />
                                    <asp:Label ID="lblWait" runat="server" Text="Please Wait..." Font-Bold="true" ForeColor="#FE2E2E"></asp:Label>
                                </ProgressTemplate>
                            </asp:UpdateProgress>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </td>
            </tr>
        </table>
    </div>

【问题讨论】:

  • OnClientClick="returnShowExpPopup();" 应该是 OnClientClick="return ShowExpPopup();" 缺少一个空格。
  • Ok.Popuwindow 工作正常。验证也正常工作。而不是显示错误消息 (*) 我想将 cotrol 的前景显示为红色。这在弹出窗口控件中不起作用。
  • 您是否使用过类似 Chrome 开发者工具的工具来检查元素并查看应用了哪些 sttles 以及样式的来源?这将使您更好地了解问题所在。

标签: javascript asp.net


【解决方案1】:

感谢 Shekhar 的链接。它工作得很好......

function fnOnUpdateValidators()
{
   for (var i = 0; i < Page_Validators.length; i++)
   {
      var val = Page_Validators[i];
      var ctrl = document.getElementById(val.controltovalidate);
      if (ctrl != null && ctrl.style != null)
      {
         if (!val.isvalid)
            ctrl.style.background = '#FFAAAA';
         else
            ctrl.style.backgroundColor = '';
      }
   }

}

Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "val", "fnOnUpdateValidators();");

【讨论】:

    【解决方案2】:

    请尝试在弹出窗口中显示验证消息。 并对主页使用单独的验证组并弹出。 假设如果您将validationgrp1 用于主页,则使用validationgrp2 进行弹出。 它认为它会成功。 感谢和问候, 合金

    【讨论】:

    • 感谢您的回复。实际上,错误消息正在弹出窗口中显示。但是如果没有填充,控件的前景色不会改变。这是我的问题。我只在弹出窗口中使用验证。
    【解决方案3】:

    你需要像下面这样使用

    OnClientClick="return ShowExpPopup();"
    

    编辑 1

    这里更改控件的前景色是关于 SO
    Change Text Box Color using Required Field Validator. No Extender Controls Please

    的类似问题

    【讨论】:

    • 这是我在复制代码时发生的错误。我在我的项目中像这样使用了'OnClientClick="return ShowExpPopup();"' ..Popupindow 工作正常。验证也在工作。而不是显示错误消息 (*) 我想将 cotrol 的前景显示为红色。这在弹出窗口控件中不起作用
    猜你喜欢
    • 1970-01-01
    • 2013-07-07
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多