2013-08-27 114 views
0

我希望能夠將表單ID傳遞給一個方法,然後該方法將代碼提交給表單所具有的任何動作url。將表單ID傳遞給函數並在函數內提交

這裏是的形式

@using (Html.BeginForm("jQueryPost", "Home",null, FormMethod.Post, new { id="FormPost1" })) 
    { 
     @Html.TextBoxFor(x => x.Name) @Html.ValidationMessageFor(x => x.Name) 
      <br /> 
     @Html.TextBoxFor(x => x.LastName) @Html.ValidationMessageFor(x => x.LastName) 
      <br /> 
     @Html.TextBoxFor(x => x.Age) @Html.ValidationMessageFor(x => x.Age) 
      <br /> 



     <br /> 

     <input type=button id="Postbtn1" value="Post Method 1 " /> 
     <input type=button id="Postbtn2" value="Post Method 2 " /> 

    } 

一個代碼在這裏是腳本

<script> 
    function ReusableJqueryPost() 
    { } 



    ReusableJqueryPost.prototype.CommonPost = function (formId) { 

     //alert('alert 2: ' + formId); 
     var fid = $("#" + formId); 
     alert('alert 3 : ' + fid); 

     $("#" + formId).submit(function (e) { 
      alert('alert 4'); 
      e.preventDefault(); 

      var validated = $(fid).valid(); 
      alert('form validated here'); 

      if (validated) { 
       $.ajax({ 
        type: 'POST', 
        url: $(fid).attr('action'), 
        data: $(fid).serialize(), 
        accept: 'application/json', 
        error: function (xhr, status, error) { 

         alert(xhr.responseText); 

        }, 
        success: function (response) { 
         alert(response.Name); 
        } 
       }); 
      } 

     }); 


$('#Postbtn1').click(function() { 

    alert('alert 1 : '); 
    var r = new ReusableJqueryPost(); 
    r.CommonPost('FormPost1'); 
}); 

$('#Postbtn2').click(function() { 
    alert('alert 1 : '); 
    var r = new ReusableJqueryPost(); 
    r.CommonPost('FormPost2'); 
}); 
</script> 

我只能夠達到,直到警報3。當我擊中這條線$("#" + formId).submit(function (e)它失敗。

有關如何完成此任何想法?對於這個例子,我只放下了Form1。 Form2是Form1的副本。

回答

1

的問題,而不是提交您註冊一個提交處理程序的形式,也沒有必要使用$("#" + formId).submit(function (e) {共同門柱內側

ReusableJqueryPost.prototype.CommonPost = function (formId) { 

    //alert('alert 2: ' + formId); 
    var fid = $("#" + formId); 
    alert('alert 3 : ' + fid); 

    var validated = $(fid).valid(); 
    alert('form validated here'); 

    if (validated) { 
     $.ajax({ 
      type: 'POST', 
      url: fid.attr('action'), 
      data: fid.serialize(), 
      accept: 'application/json', 
      error: function (xhr, status, error) { 

       alert(xhr.responseText); 

      }, 
      success: function (response) { 
       alert(response.Name); 
      } 
     }); 
    }