2009-07-08 57 views
2

我想使用jQuery提交我的Ajax表單。但是,調用submit()函數會刷新整個頁面。它應該執行表單的onSubmit部分(返回false,以便不刷新頁面)。.NET MVC - 表單提交導致回發,而不是onSubmit JavaScript執行

<%Ajax.BeginForm("AllocateAndUpdateMech", 
    New With {.Controller = "Planning", 
      .Id = Model.Id}, 
      New AjaxOptions With { 
         .LoadingElementId = "loading", 
         .UpdateTargetId = Model.Id & "_alloc"}, 
      New With {.id = "allocate_" & Model.Id & "_" & item.UserId} 
)%> 
<%Html.Hidden("mechId", item.UserId)%> 
<a href="javascript:void(0);" onclick="$('#<%="allocate_" & Model.Id & "_" & item.UserId %>').submit();">Allocate: <%=item.UserName%></a> 
<%Html.EndForm()%> 

回答

5

如果你使用HTML Ajax.BeginForm,你不能提交表單,因爲表單與ASP.NET MVC Ajax有某種聯繫。

有3個解決方案:

最簡單,最好的辦法

使用jQuery $就提交表單

簡單,但奇怪的方式

將一個提交按鈕在窗體上。將其設置爲隱藏並通過jquery點擊它。

困難,但在回答你的問題

我已經看到了地方,你還是可以做的正是你的描述,但它是一個解決辦法它沒有看起來不錯。

下面是它如何做submit form sample

1

當您在表單上調用submit()時,它不會調用通過使用該ajax表單功能創建的onSubmit函數。您將需要調用形式的onsubmit直接

$("#ViewCartPage form").onsubmit()或更好的只是this.form.onsubmit()

不要忘了包括了由Sys.Mvc.AsyncForm.handleSubmit事件(不知道它們是什麼需要的任何參數我不使用它)。

我真的會考慮放棄ms ajax js庫,只是堅持jQuery。 ms js libs充滿了寫得很糟糕的突兀混亂,只是讓事情變得複雜無故。使用jquery簡單得多。

+0

提交()函數已經返回false ...? – Ropstah 2009-07-08 11:42:26