是否可以将事件传递给Ajax表单的OnBegin函数?

时间:2016-09-28 09:07:42

标签: javascript jquery asp.net-mvc forms ajax.beginform

我的应用程序中有一个Ajax表单。我想将事件传递给OnBegin函数,然后使用event.preventdefault()这将阻止表单提交,然后检查我正在尝试的某些条件手动提交表格。但它不起作用,我无法弄清楚原因。

Ajax.BeginFrom:

   @using (Ajax.BeginForm("Update", "Project", false, new AjaxOptions { InsertionMode = InsertionMode.Replace,
                                                                         HttpMethod = "Post",
                                                                         OnBegin = "return OnBeginForm(event);",
                                                                         OnSuccess = "OnSuccessArtwork(data);", 
                                                                         OnFailure = "OnFailureArtwork(data);" }, 
                                                                         new { id = "Ajax_form" }))
{
   // Here I have all the form elements //
  <input type="submit" id="btnUpdate" class="btn02 pull-left" value="Update"/> 
}

OnBegin功能:

function OnBeginForm(e) {
   e.preventDefault();
   if(some condition){
     $('#Ajax_form').submit();
   }
   else{
     return false;
   }
}

2 个答案:

答案 0 :(得分:1)

  

event.preventdefault()将阻止表单提交

您也可以使用return false;停止提交表单,它基本上会影响event.preventdefault()。 检查this

下面的脚本应该适合你:

function OnBeginForm() {

    if (some condition) {
      return false;
    }

}

希望有帮助:)

Reference

答案 1 :(得分:0)

我能找到更好的解决方案......

    $('input[type=submit]').on('click', function (e) {
        e.preventDefault();
        var buttonid = $(this).attr('id');
        if (buttonid == "btnUpdate") {
            //Do what ever you want it fires before Ajax Submit
             //Finaly ajax submit manually trigger submit event
             $(this).trigger('submit');
        }


    });
相关问题