代码之家  ›  专栏  ›  技术社区  ›  Sam

在IE中单击面板控件下面的“不触发”按钮

  •  1
  • Sam  · 技术社区  · 15 年前

    我有一个按钮放在两个面板下面时不工作。如果我把它移到面板上面,它就会工作。

    它在火狐中都可以工作。在IE 8中不起作用

    按钮运行此代码

    protected void Button2_Click(object sender, EventArgs e)
        {
            panelForm.Enabled = true; //input panel
            panelOutput.Visible = false; //output panel
            Button1.Visible = true; //input panel button
    
        }
    

    我有一些解决办法,但希望找到问题的原因。

    编辑:这是第二个面板和按钮的标记。我试着把按钮移到面板外面,得到同样的结果。

    <asp:Content ID="MainContent" Runat="Server" ContentPlaceHolderID="MainContentPlaceHolder">
    
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    
    <asp:TextBox ID="domainUserID" runat="server" Visible="false"></asp:TextBox>
    <!-- gray bar and title -->
    <table style="width:100%; border-style:none;">
        <tr>
            <td class="com_headline">
                SQL Emergency Request [Home]
            </td>
        </tr>
        <tr class="com_app_instructions">
            <td>
                <p>Words here</p>
            </td>
        </tr>
    </table>
    <!-- end title and gray bar -->
    
    
    
    <asp:Panel ID="panelForm" runat="server" Visible="True" CssClass="myform">
    <form method="post" action="Default.aspx" id="form">
    <h1>Request Form</h1>
    <p>Complete this form to be issued a login</p>
    
    
    <table cellpadding="5px">
        <tr>
    
    
                <td>
                    IR Number
                    <br />
    
                    <span class="small">Obtain your IR number from
                    <a href="http://apps.server/SMART">SMART</a></span>
    
                </td>
                <td>
                    <asp:TextBox ID="txtIR" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                        ControlToValidate="txtIR" CssClass="errorMsg" 
                        ErrorMessage="Please Enter Your IR Number">
                    </asp:RequiredFieldValidator>
                </td>
        </tr>   
    
        <tr>
                <td>
                    Server 
                    <br />
                    <span class="small">MSSQL5 is supported for now</span>
                </td>
                <td>
                    <asp:DropDownList ID="ddServer" runat="server" AutoPostBack="True" 
                        Enabled="False" onselectedindexchanged="ddServer_SelectedIndexChanged">
                        <asp:ListItem>DEVMSSQL05</asp:ListItem>
                        <asp:ListItem Selected="True">MSSQL05</asp:ListItem>
                    </asp:DropDownList>
    
                </td>
                <td>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                        ControlToValidate="ddServer" CssClass="errorMsg" 
                        ErrorMessage="Please Choose A Server">
                    </asp:RequiredFieldValidator>
    
                </td>
         </tr>
         <tr>
                <td>      
                    Database 
                    <br />
                    <span class="small">You have the role of &#39;Analyst&#39; in these databases</span>
                </td>
                <td>
                    <asp:DropDownList ID="ddDatabase" runat="server" AppendDataBoundItems="true" 
                        AutoPostBack="false" DataSourceID="DatabaseDropDownObjectDataSource" 
                        DataTextField="DatabaseName" DataValueField="DatabaseName" Width="150">
                    </asp:DropDownList>
    
                </td>
                <td>
    
                </td>
         </tr>
    
    
                        <tr>
                            <td></td>
                            <td>
                                <asp:Button ID="Button1" runat="server" CssClass="com_btn_flat" 
                                    onclick="Button1_Click" Text="Submit" />
    
                            </td>
                            <td>
                                <div id="loader">loading...</div>
                            </td>
                        </tr>
    
    
                </table>
            </form>
    </asp:Panel>  
    
    <asp:Panel ID="PanelError" runat="server" Visible="false" CssClass="errorPanel">
            <h1><asp:Label ID="txtErrorMsg" runat="server">error text</asp:Label></h1> 
    </asp:Panel>
       <br />
    
    <asp:Panel ID="panelOutput" runat="server" Visible="false" CssClass="panelOutput">
    
            <h1>
                <asp:Literal ID="Title" runat="server" Text=""/>
            </h1>
            <p>     
                <asp:Literal ID="Warning" runat="server" Text=""/>
            </p>
            <p>     
                <asp:Literal ID="LoginLifeHours" runat="server" Text=""/>
            </p>
    
            <p>
                <span class="important"> 
                    <asp:Literal ID="Login" runat="server" Text="" />
                </span>
            </p>
            <p>     
                <span class="important">    
                    <asp:Literal ID="PWD" runat="server" Text="" />
                </span>
            </p>
            <br />
    
            <p>   
                <asp:Button ID="Button2" runat="server" Text="Request Another Login" 
                onclick="Button2_Click" CssClass="com_btn_flat" />
            </p>
    
    
    
     </asp:Panel>
    

    这是IE中没有响应的按钮

    <p>   
    <asp:Button ID="Button2" runat="server" Text="Request Another Login" 
    onclick="Button2_Click" CssClass="com_btn_flat" />
    </p>
    
    3 回复  |  直到 15 年前
        1
  •  1
  •   Joel Harris    15 年前

    问题是,您在内容页中使用的是<Form>标记。母版页已经包含一个<Form>标记,IE似乎正在阻止表单中的表单。当我从您的ASPX中删除<Form>标记时,按钮处理程序在IE8下运行。

        2
  •  1
  •   Brian Mains    15 年前

    示例代码是button2_-click,但面板外的按钮标记有test_-button_-click作为事件处理程序?这里有三个按钮,所以你问的是哪一个,我猜是最后一个?

        3
  •  0
  •   KevnRoberts    15 年前

    我注意到你的第一个面板(panelform)中有一个标签。另外,我没有看到带有runat=“server”属性的标记(尽管它可能在母版页中)。而且看起来你的按钮不在表单中(除非母版页有表单)。

    问题是,在ASP.NET Web窗体中,一个页面上只能有一个窗体。如果您的页面上没有任何<form runat=“server”>标记,则按钮将不会触发代码隐藏的任何事件。