2011-08-16 108 views
7

我有一個簡單的帶有文本框和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" /> 

我嘗試添加CausesValidation每從谷歌搜索發現了一個建議的文本框,它並不能幫助。

編輯似乎並不總是必須雙擊才能觸發事件。只要將文本輸入到文本框中,然後將焦點從文本框中移除,RequiredFieldValidator錯誤消息就會消失,並且只需單擊一下即可。

+0

如果在輸入文本框中的文本後按下Tab鍵,是否還需要點擊兩次提交按鈕? – patmortech

+0

@patmortech - 是的。看起來像當焦點從文本框中被帶走時,錯誤消失。然後按鈕只需要點擊一下。 – zeroef

+0

看看這裏http://stackoverflow.com/questions/11121725/requiredfieldvalidator-have-to-click-twice/29495726#29495726 –

回答

1

發生這種情況是因爲清除錯誤消息的代碼在文本框失去焦點時運行。那麼什麼情況是:

  1. 你在現場
  2. 您按一下按鈕,這將導致onblur事件在文本框發生輸入文字,發射的代碼再次檢查該字段的值並刪除錯誤消息
  3. 現在驗證中沒有錯誤,所以再次單擊按鈕即可提交表單。

當您按下Tab鍵第一(或基本上做任何需要的焦點從文本框),那麼的onblur腳本運行,並清除出錯誤,這樣,當你點擊提交按鈕,它是蓄勢待發。

5

我有同樣的問題與CompareValidator,發現問題就走了,當我改變了Display財產動態靜態。希望有幫助

+2

這確實有助於解決問題。謝謝DevDave。 –