取消jquery submit()方法

时间:2014-04-07 08:22:38

标签: javascript jquery html ajax forms

我有一个使用submit() jquery方法调用ajax帖子的表单:

<script>
  $(document).ready(function(){
    $('#myform').submit(function(){
      submitFunction(); /* does and Ajax post */
      return false;
    });
  });
</script>
<form id="myform" action="thisaction" method="post">
  <!-- ... -->
</form>

现在,问题是,当Ajax帖子成功时,我想取消表单提交的jquery override,以便让它执行正常操作(thisaction)。我已经尝试过了:

/* Inside submitFunction() */

$.ajax({

  /* random data... */

  success: function(jsonData)
           {
              $('#mylogin').submit(function(){
                ;
              });
           }
});

但是当我调试它时,submitFunction()仍在第二次提交后被调用...如何禁用此功能并将normal HTTP帖子发送到thisaction

2 个答案:

答案 0 :(得分:1)

在提交处理程序中,submitFunction()

之前
$(this).off('submit')

在ajax成功回调中:

$('#myform').submit();

这将取消绑定返回false的提交处理程序,并在调用ajax回调时重新提交表单。

您还可以尝试.one()绑定一个只执行一次的处理程序:

$('#myform').one('submit', function() {...

答案 1 :(得分:0)

你必须解开事件。

$('#mylogin').submit(function(){
  $(this).unbind("submit");
});

此处有文档http://api.jquery.com/unbind/