2011-01-10 64 views
1

我有一個簡單的表單,它使用jQuery驗證來通知用戶輸入錯誤等。當我添加一個ASP.NET CustomValidator到表單時,它會導致頁面回發並跳過jQuery驗證。我需要表單才能提交給服務器,直到客戶端驗證無誤。有沒有人見過這個?ASP.NET的CustomValidator控件干擾表單提交上的jQuery驗證

這是我的形式:

<form id="form1" runat="server"> 
    <core:standardscriptmanager runat="server" /> 
    <div> 
     <asp:textbox id="Email" name="Email" runat="server" cssclass="_RegisterFormValidate FormField Email {required:true, email:true, messages:{required:'You must enter an email address.', email:'Please enter a valid email address.'}}" maxlength="200" columns="75" width="98%" tooltip="Your email address"></asp:textbox> 
     <br /><br /> 
     <core:recaptcha runat="server" /> 
     <br /> 
     <asp:linkbutton id="CreateAccount" runat="server" onclick="CreateAccount_Click" text="create"></asp:linkbutton> 
    </div> 
</form> 

這是核心:包含自定義驗證驗證碼控制:

<script type="text/javascript" 
src="http://www.google.com/recaptcha/api/challenge?k=XXXKEY"> 
</script> 
<noscript> 
<iframe src="http://www.google.com/recaptcha/api/noscript?k=XXXKEY" 
    height="300" width="500" frameborder="0"></iframe><br> 
<textarea name="recaptcha_challenge_field" rows="3" cols="40"> 
</textarea> 
<input type="hidden" name="recaptcha_response_field" 
    value="manual_challenge"> 
</noscript> 

<asp:customvalidator id="RecaptchaValidator" runat="server" controltovalidate="DummyInput" onservervalidate="ServerValidate" validateemptytext="true" /> 
<asp:textbox id="DummyInput" runat="server" cssclass="Hidden"></asp:textbox> 

注:DummyInput是唯一有使的CustomValidator快樂,我的ServerValidate事件正確處理驗證碼結果。

CustomValidator的ServerValidate部分在回發期間工作正常,但我需要它停止干擾客戶端驗證。如果我從recaptcha控件中移除CustomValidator,一切都會很好。

我是否需要在CustomValidator的clientvalidationfunction中調用jquery-validate來做些事情,以使其正確工作?

任何想法或建議將受到歡迎。

回答

1

因此,原來的答案,這個問題是設置的CausesValidation =我的LinkBut​​ton的「假」,然後調用Page.Validate( )在linkbutton的OnClick處理程序中。

這不完全是我正在尋找的解決方案,因爲每次我想要使用recaptcha(或任何自定義驗證程序)時都必須記住這些事情,但現在看起來似乎有效。

0

您可以驗證的EnableClientScript屬性設置爲false

<asp:CustomValidator id="RecaptchaValidator" runat="server" 
    ControlToValidate="DummyInput" OnServerValidate="ServerValidate" 
    ValidateEmptyText="True" EnableClientScript="False" /> 
+0

這並不完全讓我在我需要的地方,但讓我走上正確的軌道。謝謝您的幫助。 – 2011-01-11 17:08:52