通过在文本字段上按 Enter 在用户控件上提交窗体不起作用
本文关键字:控件 提交 窗体 不起作用 用户 文本 字段 Enter | 更新日期: 2023-09-27 17:47:23
这似乎是一个常见问题,但我找不到解决方案。
我输入我的用户名和密码,这些用户名和密码位于我创建的登录控件中。然后,一旦我输入了密码,我就按回车键,页面就会刷新。它触发页面加载事件,但不触发单击按钮事件。
如果我按下提交按钮,那么一切正常。
使用表单默认按钮是正确的,但您需要为其提供正确的id,因为它将被呈现为HTML。
所以你按照乔恩上面说的去做:
<form runat="server" DefaultButton="SubmitButton">
但请确保使用将呈现的按钮名称。您可以通过在控件中公开按钮或返回其 ClientId 的方法来实现此目的。
假设您的按钮名为 btnSubmit,并且您的控件实现为 ucLogin。
为您的表单提供 ID
<form runat="server" id="form1">
然后在页面代码后面的页面加载中,通过向它提供按钮客户端 ID 来设置 DefaultButton。
protected void Page_Load(object sender, EventArgs e)
{
form1.DefaultButton = ucLogin.btnSubmit.ClientID;
}
如果您
使用的是 ASP.NET 或更高版本,则可以为页面的表单设置默认按钮属性:
<form runat="server" DefaultButton="SubmitButton">
在文本输入上按 Enter 将执行 Form.onsubmit,而不是 Button.onclick。
我想这是受到这样一个事实的启发,即您可以拥有一个没有实际提交按钮的表单(仅取决于 ENTER 的使用)。