2009-05-01 67 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();

這對我來說每次都有效。這不適合你嗎?