在aspx页面上输入Key触发Response.Redirect

时间:2012-06-20 12:28:56

标签: c# javascript jquery asp.net

希望有人可以提供帮助。我在aspx站点上工作,使用c#作为代码。我有3个输入框,但是当我的光标位于其中一个输入框中时,它似乎触发了search_Click代码,如果光标位于searchBox中,则该代码很好,但是当光标位于用户名和密码文本框。我没有任何javascript触发此事件,想要做的是如果用户在searchBox中并点击进入,他们会触发Search_Click,否则如果他们在用户名或密码文本框中并点击输入则触发与之关联的代码login_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));
}

4 个答案:

答案 0 :(得分:1)

你可以尝试

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

<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:TextBox内的asp:Panel,则按Enter将启动DefaultButton。如果您不希望特定的一个回复到服务器,则更新DefaultButton以便它自动取消,例如......

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