RequiredFieldValidator要求用户单击两次

zer*_*oef 7 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" />
Run Code Online (Sandbox Code Playgroud)

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

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

Dev*_*ave 6

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

  • 这确实有助于解决问题.谢谢DevDave. (2认同)

pat*_*ech 1

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

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

当您先按 Tab 键(或者基本上执行任何使焦点离开文本框的操作)时,onblur 脚本就会运行并清除错误,以便当您单击提交按钮时,它就可以开始了。