通过在文本字段上按 Enter 在用户控件上提交窗体不起作用

本文关键字:控件 提交 窗体 不起作用 用户 文本 字段 Enter | 更新日期: 2023-09-27 17:47:23

这似乎是一个常见问题,但我找不到解决方案。

我输入我的用户名和密码,这些

用户名和密码位于我创建的登录控件中。然后,一旦我输入了密码,我就按回车键,页面就会刷新。它触发页面加载事件,但不触发单击按钮事件。

如果我按下提交按钮,那么一切正常。

通过在文本字段上按 Enter 在用户控件上提交窗体不起作用

使用表单默认按钮是正确的,但您需要为其提供正确的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 的使用)。