2012-11-28 36 views
1

我有一個多文本框,一個按鈕和兩個驗證一個表單。 我有以下的標記:文本框不重新確認對模糊

<asp:RequiredFieldValidator ID="vldQuestionTextRequired" runat="server" ControlToValidate="tbmQuestionText" 
     Display="Dynamic"></asp:RequiredFieldValidator> 
<asp:CustomValidator ID="vldNotHintText" runat="server" ControlToValidate="tbmQuestionText" 
     Display="Dynamic" EnableClientScript="true" OnServerValidate="HintText_ServerValidate" 
     ClientValidationFunction="HintText_ClientValidate"></asp:CustomValidator> 
     <span class="eq_ad_question_field_bg">&nbsp;&nbsp;&nbsp;&nbsp;</span> 
     <asp:TextBox ID="tbmQuestionText" runat="server" CssClass="eq_ad_question_field" 
      TextMode="MultiLine"></asp:TextBox> 

客戶端驗證JS是這樣的:

function HintText_ClientValidate(sender, e) 
{ 
    if(e.Value != null) 
     e.IsValid = e.Value != '<%= InstructionalText %>'; 
    else 
     e.IsValid = false; 
} 

當我按一下按鈕,而無需修改原來的提示文本我得到正確的校驗錯誤信息,焦點回到文本框。如果我然後在文本框中寫入一些內容,然後單擊該按鈕,驗證器將被重新評估並消失,但不會發生回發。如果我再次點擊該按鈕,我會得到回傳。

之前已經看到過這種行爲的任何一個? 謝謝!

編輯︰我發現,如果我使驗證靜態,而不是動態,按鈕的作品。有什麼辦法可以解決這個問題嗎?

+0

也許這個解決方案可以幫助你嗎? http://stackoverflow.com/questions/12212881/requiredfieldvalidator-working-oddly-in-update-panel/13135685#13135685或相同http://stackoverflow.com/questions/8577052/dynamically-created-requiredfieldvalidator-bypasses-客戶端驗證/ 13153236#13153236 –

+0

@BorissPavlovs - 我總是可以手動添加模糊驗證。我正在尋找我可能錯過的東西,因爲我認爲asp.net js框架應該照顧這些事情恕我直言。 –

+0

如果驗證後的Page_IsValid仍然爲false,則可能發生此錯誤。我想你不會忘記爲驗證器和按鈕添加驗證組。我通常在我的自定義驗證功能中使用Page IsValid = args.IsValid –

回答

1

嗯,這不得不文本一些JavaScript,使之富有彈性。這個JavaScript在onblur事件中發生了變化,以便移除未使用的空間,並且自文本框發生更改後,回發被停止。最小化文本框並不是首先要求的,所以我刪除了它,並且回發效果很好。