考虑以下ASPX:
<asp:ValidationSummary ID="vSummary" runat="server" CssClass="error-message" HeaderText="<p>Please correct the following errors with your profile.</p>" ShowMessageBox="false" DisplayMode="BulletList" ShowSummary="true" />
<asp:TextBox ID="txtTest" runat="server" ClientIDMode="Static"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfv" runat="server" Display="None" ErrorMessage="Enter a value in the textbox." ControlToValidate="txtTest"></asp:RequiredFieldValidator>
<asp:Button ID="btn1" runat="server" Text="Button 1" OnClick="btn1Click" ClientIDMode="Static" />
将文本输入文本框后,所有内容都按预期运行。
点击按钮提交表单/按“Enter”,文本框内部提交表单。
但是,当文本框为空时,按“输入”不会执行任何操作。单击该按钮将按预期显示验证摘要,但按“输入”则不会。
如何在空文本框中按下“Enter”键后显示验证摘要?
答案 0 :(得分:1)
出于某种原因,当您点击Enter时,ValidationSummary控件不会显示错误。但是,如果您将RequiredFieldValidator显示更改为“动态”,您将看到错误消息。
更新:要解决此问题,请尝试按照this文章中的说明操作。
对于懒惰的人:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Add new attribute to form1 event to fire when enter key submit button click event
form1.Attributes.Add("onkeydown", "javascript: return WebForm_FireDefaultButton (event, '" + ButtonName.ClientID + "')");
// Allow you to use enter key for sumbit data
ClientScript.RegisterHiddenField("__EVENTTARGET", "ButtonName");
}
}
最后:
// Add this code to div section on the form1 ASPX page.
<div id="inputArea" onkeypress="javascript:return WebForm_FireDefaultButton(event,'ButtonName')">
答案 1 :(得分:0)
这种行为是因为您的文本框正在验证,但验证邮件未显示,因为您已使用Display = "none"
将其关闭。它在客户端进行验证,因此,由于空文本而没有发生回发。
如果从页面中删除验证控件(不是您想要的),则文本框将开始回发。我想你不希望每个控件显示消息,只是在验证摘要中,否则,这是最简单的方法