2011-11-29 58 views
1

我有一個帶有必填字段的局部視圖窗體。我嘗試提交表單並獲得預期行爲的驗證錯誤。現在我填寫必填字段並提交表單,我的ControllerAction替換了部分視圖。jQuery&MVC:成功提交表單後客戶端驗證功能關閉

現在我再次清空必填字段並嘗試再次提交 - 並提交表單。我得到驗證錯誤困難,但我的頁面正在發送POST請求。

這裏發生了什麼?

編輯

Zruty給出了正確的答案,我更新了我的ajaxSetup:

$j.ajaxSetup({ 
    statusCode: { 
     200: function (data, textStatus, jqXHR) { 
      $.validator.unobtrusive.parse(document); 
     } 
    } 
}); 
+2

是您的形式通過AJAX從瀏覽器發佈,或直接? – Zruty

+0

它通過AJAX提交,我使用助手'Ajax.BeginForm' – iappwebdev

回答

3

MVC3的 '不顯眼的JavaScript驗證' 功能是通過jquery.validation插件供電。

加載頁面後,其DOM完全被解析,以說明所有驗證屬性。

很顯然,當您之後展開DOM時,驗證插件將不會自動解釋這些添加的規則。

你可以通過調用$.validator.unobtrusive.parse(document)你完成修改DOM後,迫使你的DOM文檔的再解析:

$.get("somedata.html", {}, function (data) { 
     $("div.ajax-loaded").html(data); 
     $.validator.unobtrusive.parse(document); 
    }, "html"); 

編輯:我從來沒有使用過AjaxHelper我的AJAX溝通,但現在看來,你很容易打滑的售後服務,請求處理成AjaxOptions.OnSuccess參數:

@using(Ajax.BeginForm("Action", 
    new AjaxOptions { OnSuccess = "successCallback" })) 
{ 
    ... 
} 
<script type="text/javascript"> 
    function successCallback(ajaxContext){ 
     $.validator.unobtrusive.parse(document); 
    } 
</script> 
+0

謝謝,這就是我所需要的。我擴展了我的ajaxSetup。我更新了我的問題,使其更具可讀性。 – iappwebdev