2011-01-10 3 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> 

そして、これがコアです:カスタムバリデータが含まれていreCAPTCHAのコントロール:

<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イベントはcaptchaの結果を正しく扱います。

CustomValidatorのServerValidate部分はポストバック中に正常に動作していますが、クライアント側の検証の妨げにならないようにする必要があります。 recaptchaコントロールからCustomValidatorを削除すると、すべてがうまくいくようになります。

正しく動作させるには、CustomValidatorのclientvalidation関数でjquery-validateを呼び出す必要がありますか?

ご意見やご提案をお待ちしております。

答えて

1

だから、この問題に対する答えは私のLinkBut​​tonコントロールにCausesValidation =「false」に設定してからPage.Validate(呼び出すことだっ判明)をリンクボタンのOnClickハンドラに追加します。

私はrecaptcha(またはその問題のカスタムバリデーター)を使用するたびにこれらのことを覚えておく必要があるので、私が探していたソリューションではありませんが、これは今のところうまくいくようです。

0

あなたはfalseにあなたのバリデータのEnableClientScriptプロパティを設定することができます。

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

これは、私が必要とされていた場所ではなく、正しい軌道に乗ってくれました。助けてくれてありがとう。 –

関連する問題