带有function()的Jquery .submit不起作用

时间:2017-12-05 17:58:27

标签: javascript php jquery html forms

我正在使用Jquery,如果我点击链接或执行某些操作,我想在页面上自动更新我的表单。如果我使用.submit()它工作正常,如果我使用.submit(function(e){})表单将不会提交。我需要从表单提交中获得响应,这就是为什么我需要.submit(function(e){})来处理.submit()。感谢。

我有一张表格:

  <form action="action.html" id="form1">
  </form>

我有一个链接:

 <a href="" data-id="1" class="myLink">Link</a>

当我点击链接时,我会执行以下操作:

 $(document).on('click', '.myLink', function(e) {
      // this will call a function to submit my form...
      var response = saveEmailDraft($(this).data('id'));
      e.preventDefault();
 });  

 function saveEmailDraft(id){
      $('#form' + id).submit(); // this works fine...
      $('#form' + id).submit(function(e){
          // this DOES NOT work...
          alert('my form submitted!');
      }); 

      // I've also tried;
      $(document).ready(function() {
           $('#form' + id).submit(); // this works fine...
           $('#form' + id).submit(function(e){
               // this DOES NOT work...
               alert('my form submitted!');
           });
      });

 }

1 个答案:

答案 0 :(得分:1)

您需要在提交表单之前绑定事件处理程序

function saveEmailDraft(id){
    $('#form' + id).submit(function(e){
        alert('my form submitted!');
    }); 
    $('#form' + id).submit();
}

但是,这不会让你从表单提交中获得回复。在将表单数据发送到服务器之前执行事件处理程序。提交表单后,页面将重新加载,所有当前脚本都将停止运行。

如果您想获得回复,则需要使用$.ajax(或$.get$.post之类的快捷方式)代替.submit()