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