0

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

4

2 回答 2

1

由于某种原因,当您按 Enter 时,ValidationSummary 控件不会显示错误。但是,如果您将RequiredFieldValidator 显示更改为“动态”,您将看到错误消息。

更新:要克服此问题,请尝试按照本文中的说明进行操作

对于懒惰的人:

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')">
于 2013-03-12T21:35:55.160 回答
0

该行为是因为您的文本框正在被验证,但验证消息未显示,因为您使用Display = "none". 它在客户端进行验证,因此,由于文本为空,没有发生回发。

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

于 2013-03-12T21:44:55.997 回答