2013-08-27 2 views
0

Я хочу, чтобы иметь возможность передать идентификатор формы методу, который затем имеет код для отправки формы в зависимости от того, какой URL-адрес действия имеет эта форма.Передача идентификатора формы функции и отправки ее в пределах функции

Вот код для одной из форм

@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); 
      } 
     }); 
    } 
Смежные вопросы