【问题标题】:Enter Key firing off an Response.Redirect on aspx page在 aspx 页面上输入键触发 Response.Redirect
【发布时间】:2012-06-20 20:51:27
【问题描述】:

希望有人可以提供帮助。我正在一个 aspx 网站上工作,使用 c# 作为背后的代码。我有 3 个输入框,但是当我的光标位于其中一个输入框中时,它似乎会触发 search_Click 代码,如果光标位于 searchBox 中,这很好,但当光标位于用户名和密码文本框。我没有任何 javascript 触发此事件,想要做的是如果用户在 searchBox 中并按回车键,他们会触发 Search_Click 否则如果他们在用户名或密码文本框中并按回车键,他们会触发与相关联的代码登录_点击。希望这是有道理的,任何人都知道为什么它会触发 Response.Redirect,即使我没有 javascript/jquery 将其发送到。

//Front end aspx page
<input type="text" class="searchBox" autocomplete="off" id="searchBox" name="searchBox" runat="server" />
<asp:Button ID="searchBtn" class="searchBtn" runat="server" onclick="search_Click" />

<li>
  <asp:Label ID="UserNameLabel"  AssociatedControlID="UserName" runat="server" Text="Username :" CssClass="usernamelabel" />
  <asp:TextBox ID="UserName" runat="server" ValidationGroup="RegisterValidationGroup" CssClass="Username-Password" />                     
</li>
<li>
  <asp:Label ID="PasswordLabel"  AssociatedControlID="Password" runat="server" Text="Password :" CssClass="usernamelabel" />
  <asp:TextBox ID="Password" runat="server" ValidationGroup="RegisterValidationGroup" TextMode="Password" CssClass="Username-Password" />
</li>
<li>
  <asp:Button ID="loginBtn" class="loginBtn" Text="Login" runat="server" onclick="Login_Click" />
</li>



//C# Code behind
protected void search_Click(object sender, EventArgs e)
{
    Response.Redirect("/SearchResults.aspx?q=" + Server.UrlPathEncode(searchBox.Value));
}

【问题讨论】:

    标签: c# javascript jquery asp.net


    【解决方案1】:

    你可以试试

    <asp:TextBox ID="TextBox1" runat="server" onkeydown = "return (event.keyCode!=13);" >
    </asp:TextBox>
    

    【讨论】:

      【解决方案2】:

      除非我误解了您的问题,否则您可以使用 asp:Panel 对象的 DefaultButton 属性

      对于您的登录使用类似...(未经测试)

      <asp:Panel runat="server" DefaultButton="btnLogin">
        <asp:TextBox runat="server" id="txtUsername" />
        <asp:TextBox runat="server" id="txtPassword" TextMode="Password"/>
        <asp:Button runat="server" id="btnLogin" Text="Login" />
      </asp:Panel>
      

      然后为您的搜索...(未经测试)

      <asp:Panel runat="server" DefaultButton="btnSearch">
        <asp:TextBox runat="server" id="txtSearch" />
        <asp:Button runat="server" id="btnSearch" />
      </asp:Panel>
      

      这背后的想法是,如果焦点位于asp:Panel 中的asp:TextBox,按回车键将启动DefaultButton。如果您不希望某个特定事件导致回发到服务器,请更新DefaultButton 使其自动取消,例如...

      <asp:Button runat="server" id="btnSearch" OnClientClick="return false;" />
      

      【讨论】:

        【解决方案3】:

        您可以在面板中包含不希望默认表单提交行为的文本框并设置其 DefaultButton 属性。

        【讨论】:

          【解决方案4】:

          您可以创建一个面板,将您的搜索文本框和按钮放入此面板并设置 DefaultButton="searchBtn"。我参考了这个链接:https://stackoverflow.com/a/7836069/1380428

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-09
            相关资源
            最近更新 更多