Элемент управления ASP.NET CustomValidator мешает проверке jQuery при отправке формы - PullRequest
1 голос
/ 11 января 2011

У меня есть простая форма, которая использует проверку 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 правильно обрабатывает результаты проверки.

Часть ServerValidate CustomValidator работает нормально во время обратной передачи, но мне нужно, чтобы она перестала мешать проверке на стороне клиента.Если я удаляю CustomValidator из элемента управления recaptcha, все играет хорошо.

Нужно ли делать что-то вроде вызова jquery-validate в функции clientvalidator clientvalidation, чтобы эта работа работала правильно?

Любые мысли или предложения приветствуются.

Ответы [ 2 ]

1 голос
/ 11 января 2011

Получается, что ответом на этот вопрос было установить CausesValidation = "False" на моей кнопке ссылки, а затем вызвать Page.Validate () в обработчике OnClick кнопки.ищу, потому что мне придется помнить, чтобы делать эти вещи каждый раз, когда я хочу использовать recaptcha (или любой другой пользовательский валидатор в этом отношении), но пока это работает.

0 голосов
/ 11 января 2011

Вы можете установить свойство EnableClientScript вашего валидатора на false:

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