1

jQuery検証を使用してユーザーに入力エラーなどを通知する単純なフォームがあります。ASP.NETCustomValidatorをフォームに追加すると、ページがポストバックされ、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>

そして、これはカスタムバリデーターを含むcore: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イベントはキャプチャ結果を正しく処理します。

CustomValidatorのServerValidate部分は、ポストバック中は正常に機能していますが、クライアント側の検証への干渉を防ぐために必要です。CustomValidatorをrecaptchaコントロールから削除すると、すべてがうまく機能します。

これを正しく機能させるには、CustomValidatorのclientvalidationfunctionでjquery-validateを呼び出すようなことをする必要がありますか?

どんな考えや提案も歓迎します。

4

2 に答える 2

1

したがって、この問題の答えは、リンクボタンにCausesValidation = "False"を設定してから、リンクボタンのOnClickハンドラーでPage.Validate()を呼び出すことでした。

これは、私が探していた解決策ではありません。recaptcha(またはそのことについてはカスタムバリデーター)を使用するたびにこれらのことを行うことを忘れないようにする必要があるためですが、これは今のところ機能しているようです。

于 2011-01-11T17:09:29.263 に答える
0

バリデーターのEnableClientScriptプロパティを次のように設定できますfalse

<asp:CustomValidator id="RecaptchaValidator" runat="server"
    ControlToValidate="DummyInput" OnServerValidate="ServerValidate"
    ValidateEmptyText="True" EnableClientScript="False" />
于 2011-01-10T22:26:32.543 に答える