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」を押しても何も起こりません。ボタンをクリックすると、期待どおり検証の概要が表示されますが、「Enter」を押しても表示されません。

空のテキストボックス内で「Enter」キーを押した後に検証の概要を表示するにはどうすればよいですか?

4

2 に答える 2

1

なんらかの理由で、入力エラーが 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"。クライアント側で検証を行っているため、空のテキストのためにポストバックは発生しませんでした。

ページから Validation コントロール (これは望ましくない) を削除すると、テキスト ボックスはポストバックを開始します。検証の概要だけで、各コントロールにメッセージを表示したくないと思います。それ以外の場合は、それが最も簡単な方法です

于 2013-03-12T21:44:55.997 に答える