2009-05-01 66 views
1

我有一个有提交按钮的.NET页面。我正在使用客户端验证来验证表单元素。在.NET中提交表单

var register = $('#<%= Register.ClientId %>'); 
register.click(function(){ 
    validation.init(); 
    return false; 
}); 

现在,顶部返回false将阻止窗体在点击时提交给服务器。在任何其他语言中,一旦我进行了验证,我就会打电话给表单提交方法,好吧,它会起作用。不知何故,这在.NET中似乎不起作用。我不确定这是因为表单标记本身是否包裹整个页面内容。

回答

2

你应该使用ASP.NET的CustomValidator来完成这个钩子,这将被连接起来以自动运行在form.submit上。

过时的老VB教程,但你可以得到它的要点:http://www.4guysfromrolla.com/articles/073102-1.aspx

+0

还有其他方法吗?我对自定义验证器出现的额外空格/ html没有那么疯狂。 – Dhana 2009-05-01 20:55:28

+0

将CustomValidator设置为display ='dynamic'并且不会收到任何错误消息。然后只处理你的错误显示/隐藏在customvalidator的JS函数中。 – FlySwat 2009-05-01 20:57:16

0

而不是总是返回false,执行验证,然后真或假基于回报的结果。

0

form.submit()在ASP.NET中正常工作 - 您还有其他问题。发布更多的代码,我们将看到它是什么....

<script runat="server"> 
    protected override void OnLoad(EventArgs e) { 
     base.OnLoad(e); 
     if (IsPostBack) { 
      ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack!');", true); 
     }  
    } 
</script> 

<body> 
    <script type="text/javascript"> 
     function OnClick() { 
      window.setTimeout(function() { form1.submit(); }, 5000); 
      return false; 
     } 
    </script> 
    <form id="form1" runat="server"> 
     <input type="submit" onclick="return OnClick();" />  
    </form> 
</body>  
0

我一直在做这种事情。特别是如果我有一些复杂的验证,我不想使用验证器控件。 document.forms [0] .submit();

这对我来说每次都有效。这不适合你吗?