7

我有一个简单的 Web 表单,其中包含一个文本框和一个与它相连的 RequiredFieldValidator。当触发RequiredFieldValidator 错误时,用户必须单击提交两次才能发布表单。第一次单击清除错误,第二次实际触发按钮单击事件。这是预期的行为吗?

<asp:RequiredFieldValidator ID="reqFieldCloseComment" ControlToValidate="tbCloseComment" ValidationGroup="ChangeStatus" ErrorMessage="Please enter a reason" Display="Dynamic" runat="server"></asp:RequiredFieldValidator>
            <asp:TextBox ID="tbCloseComment" runat="server" CausesValidation="true" TextMode="MultiLine" Height="107px" Width="400px"></asp:TextBox>

        <asp:Button ID="btnCloseRequestFinal" Text="Finish" CssClass="CloseReqButton" runat="server" ValidationGroup="ChangeStatus" />

我尝试CausesValidation根据从 Google 搜索中找到的建议添加到文本框中,但没有帮助。

编辑似乎并不总是必须双击才能触发事件。只要在文本框中输入文本,然后将焦点从文本框中移开,RequiredFieldValidator 错误消息就会消失,并且只需单击一下表单。

4

2 回答 2

6

我对 a 有同样CompareValidator的问题,当我将Display属性从Dynamic更改为Static时,问题就消失了。希望有帮助

于 2012-06-21T08:57:21.887 回答
1

发生这种情况是因为清除错误消息的代码在文本框失去焦点时运行。所以会发生什么:

  1. 您在字段中输入文本
  2. 您单击按钮,这会导致文本框上发生 onblur 事件,触发代码以再次检查字段的值并删除错误消息
  3. 现在验证没有错误,所以再次点击按钮提交表单。

当您首先按 Tab 键(或基本上执行任何将焦点从文本框移开的操作)时,该 onblur 脚本将运行并清除错误,以便在您单击提交按钮时它已准备就绪。

于 2011-08-17T14:53:36.793 回答