具有ValidationSummary的RequiredFieldValidator无法在空文本框中使用enter键

时间:2013-03-12 21:16:43

标签: asp.net .net asp.net-4.0 requiredfieldvalidator validationsummary

考虑以下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”键后显示验证摘要?

2 个答案:

答案 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"将其关闭。它在客户端进行验证,因此,由于空文本而没有发生回发。

如果从页面中删除验证控件(不是您想要的),则文本框将开始回发。我想你不希望每个控件显示消息,只是在验证摘要中,否则,这是最简单的方法