2013-08-29 105 views
0

我使用asp.net mvc3爲我的項目以及jquery ajax方法。我已經能夠驗證輸入,但是如果我單擊帖子按鈕,即使表單包含無效數據,也會發布數據。我知道這可以使用提交按鈕來解決。但我想用我的jquery方法。我一直在使用asp.net mvc3客戶端驗證。這是我的代碼來發布表單中的數據。客戶端驗證在asp.net mvc3

//jQuery 
function PostForm(Url, FormID, Title) {  

    var dataTOPost = '#' + FormID; // Id of particular form to post 

    $.ajax({ 
     url: Url, 
     type: 'POST', 
     data: $(dataTOPost).serialize(), 
     beforeSend: function() { 
      //display some loading pics 
     } 
    }).done(function (result) { 

     //if success do something 
    }); 

} 

而且我用它如下

<a onclick="PostForm('someurl','myform', 'Title of dialog');" >Submit</a> 

這是形式的部分截屏被驗證。即使表單包含無效數據,表單也會發布。我該如何解決這個問題。謝謝。

Certain part of form being validated

+0

可能您應該手動檢查錯誤消息長度是否大於零並返回false。 – ssilas777

+0

如果你有你的模型中定義的驗證,並且你正在引用jquery,jquery.validate,jquery.validate.unobtrusive,試着在你的表單函數裏添加一個提交處理程序。可以幫忙! –

+0

@ ssilas777,這將是非常耗時的。我想知道是否有一些mvc3中的功能,用於檢查發佈的數據是否有效。只有在數據有效的時候纔會顯示錯誤訊息或類似的東西。 – Redone

回答

5

你要解析的形式使用來驗證:

$.validator.unobtrusive.parse($(form)); 

然後問,如果是有效的:

$(form).valid(); 

例:

function PostForm(Url, FormID, Title) {  

     var dataTOPost = '#' + FormID; // Id of particular form to post 

     $.validator.unobtrusive.parse($(dataTOPost)); 

     if ($(dataTOPost).valid()){ 

      $.ajax({ 
       url: Url, 
       type: 'POST', 
       data: $(dataTOPost).serialize(), 
       beforeSend: function() { 
        //display some loading pics 
       }, 
       done: function (result) { 
        //if success do something 
       }}); 
     }else{ 
     console.log("invalid form"); 
     } 
    } 
+0

它有效。謝謝!克里斯蒂普福。 – Redone

0
$("a").click(function(event) { 
    //cancel submit click 
    event.preventDefault(); 
    //check errors 
    ... 
    //Post your form 
    PostForm('someurl','myform', 'Title of dialog'); 
});