通过在文本字段上按Enter在用户控件上提交表单不起作用
时间:2020-03-06 15:01:03 来源:igfitidea点击:
这似乎是一个常见的问题,但我找不到解决方案。
我输入我创建的登录控件中的用户名和密码。
输入密码后,我将按Enter键,页面将刷新。它触发页面加载事件,但不触发点击事件按钮。
如果我按下提交按钮,则一切正常。
解决方案
在文本输入上按ENTER键将执行Form.onsubmit,而不是Button.onclick。
我想这是受以下事实启发的:我们可以拥有一个没有实际提交按钮的表单(仅取决于ENTER的使用)。
如果我们使用的是ASP.NET 2.0或者更高版本,则可以为页面的Form设置默认按钮属性:
<form runat="server" DefaultButton="SubmitButton">
使用表单的默认按钮是正确的,但是我们需要提供正确的ID,因为它将呈现为HTML。
所以我们要按照乔恩(Jon)的话做:
<form runat="server" DefaultButton="SubmitButton">
但是,请确保使用将要呈现的Button名称。
我们可以通过在控件中公开Button或者将其返回为ClientId的方法来实现。
假设按钮称为btnSubmit,而控件ucLogin的实现。
输入表格ID
<form runat="server" id="form1">
然后,在页面中,将代码加载到页面后面,然后将按钮客户端ID设置为DefaultButton。
protected void Page_Load(object sender, EventArgs e) { form1.DefaultButton = ucLogin.btnSubmit.ClientID; }