RequiredFieldValidator要求用户单击两次

时间:2011-08-16 23:47:22

标签: asp.net validation requiredfieldvalidator

我有一个简单的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" />

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

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

2 个答案:

答案 0 :(得分:6)

我对CompareValidator遇到了同样的问题,当我将{{1>}属性从动态更改为静态时,问题就消失了。希望有所帮助

答案 1 :(得分:1)

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

  1. 您在字段中输入文字
  2. 您单击按钮,这会导致onblur事件发生在文本框上,触发代码以再次检查字段的值并删除错误消息
  3. 现在验证中没有错误,因此再次单击该按钮会提交表单。
  4. 当您先按Tab键(或基本上执行任何将焦点从文本框中移开)时,该onblur脚本会运行并清除错误,这样当您单击“提交”按钮时它就可以运行了。