我在参加活动时遇到了问题。我已阅读有关此问题的多篇文章,但尚未找到解决方案。 该项目必须在Chrome,FF& IE(8,9,10,11)。目前它无法在任何浏览器中运行。
我在一个页面上有两个表单的注册/登录
<asp:Panel ID="pnlRegister" runat="server"BorderWidth="0">
<table class="register">
<tr align="left">
<td class="row_left_heading" colspan="2">
<asp:TextBox ID="txtFirstName" runat="server" CssClass="textbox_required"></asp:TextBox>
</td>
</tr>
<tr>
<td class="row_left">
Last name
</td>
<td class="row_right">
<asp:TextBox ID="txtLastName" runat="server" CssClass="textbox_required"></asp:TextBox>
</td>
</tr>
................................... 有更多的申请进入数据和验证提交 ...................................
-Register button
<asp:ImageButton runat="server" ValidationGroup="group_registration"
ID="btnRegister" CssClass="btnDownload"
ImageUrl="../images/download_now_blue_clear.png"
OnClick="btnRegister_Click" />
在页面右侧,有登录元素
<tr align="left">
<td class="row_left">
Email
</td>
<td>
<asp:TextBox ID="txtUserName" runat="server"
CssClass="textbox_required"></asp:TextBox>
</td>
</tr>
<tr>
<td class="row_left">
Password
</td>
<td>
<asp:TextBox ID="txtPassword" runat="server"
CssClass="textbox_required" TextMode="Password"></asp:TextBox><br />
</td>
</tr>
...并登录按钮
<asp:ImageButton runat="server" ValidationGroup="group_login"
ImageUrl="/forum/forum_images/button_login.png"
ID="btnLogin" OnClick="btnLogin_Click"
/>
上面是输入数据的表单,当通过鼠标按钮点击时,一切正常。
输入按钮的代码:
/// <summary>
/// Sets up javascript events that handle posting data using enter key
/// </summary>
private void SetupJSEventHandlers()
{
txtUserName.Attributes.Add("onfocus", "SetActiveForm('login');");
txtUserName.Attributes.Add("onblur", "DeactivateForm();");
txtPassword.Attributes.Add("onfocus", "SetActiveForm('login');");
txtPassword.Attributes.Add("onblur", "DeactivateForm();");
txtFirstName.Attributes.Add("onfocus", "SetActiveForm('register');");
txtFirstName.Attributes.Add("onblur", "DeactivateForm();");
txtPhone.Attributes.Add("onfocus", "SetActiveForm('register');");
txtPhone.Attributes.Add("onblur", "DeactivateForm();");
txtEmail.Attributes.Add("onfocus", "SetActiveForm('register');");
txtEmail.Attributes.Add("onblur", "DeactivateForm();");
}
并抓住:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
......
SetupJSEventHandlers();
}
else
{
if (Request[ACTIVE_FORM_NAME] == "register")
{
btnRegister_Click(null, null);
}
else if (Request[ACTIVE_FORM_NAME] == "login")
{
btnLogin_Click(null, null);
}
txtFirstName.Focus();
}
我尝试过的另一段代码(并且失败了):
private void textBox_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter)
{
if (Request[ACTIVE_FORM_NAME] == "register")
{
btnRegister_Click(null, null);
}
else if (Request[ACTIVE_FORM_NAME] == "login")
{
btnLogin_Click(null, null);
}
}
}
答案 0 :(得分:2)
您可以使用Panel的DefaultButton
属性或表单来执行此操作。您可以将不同的DefaultButton
设置为不同的面板。
<asp:Panel runat="server" ID="pnlRegister" DefaultButton="btnRegister">
答案 1 :(得分:0)
您在这里重新创建了许多内置的ASP.NET功能。您应该删除事件处理程序和ACTIVE_FORM_NAME
属性。
相反,将每个“表单”放入单独的<asp:Panel>
元素中。
<asp:Panel>
元素有一个名为DefaultButton
的属性。将其中每个设置为相关的<asp:Button>
ID。
然后,ASP.NET将处理捕获回车键的客户端工作,并自动调用相关的btnX_Click()
事件处理程序。
答案 2 :(得分:0)
在Panel
中使用DefaultButton选项<asp:Panel ID="pnlRegister" runat="server"BorderWidth="0" DefaultButton="btnRegister">
Some Content
</asp:Panel>
<asp:Panel ID="pnlLogin" runat="server"BorderWidth="0" DefaultButton="btnLogin">
Some Content
</asp:Panel>