jquery调用自定义表单提交,然后正常

时间:2011-11-21 15:30:45

标签: javascript jquery ajax forms

我想将一个submit()处理程序附加到一个表单来运行ajax请求,当它返回时,表单正常提交自己。这可能吗? $('#myForm')。submit()将递归调用相同的函数。

我宁愿不将事件处理程序附加到单击提交按钮,因为并非所有用户都使用鼠标提交表单。像我一样,很多人只使用返回键。

3 个答案:

答案 0 :(得分:6)

试试这个。在下面的代码中,我解析了ajax成功处理程序中的表单提交事件处理程序,然后提交表单。

$('form').bind('submit', function(){

    //Do ajax call here
    $.ajax({
       url: "url",
       success: function(){
          //On success do what you want to do 
          //and then ubind the submit event handler and submit the form

          $('form').unbind('submit').submit();
       }
    });

    //Prevent default form submit
    return false;

});

答案 1 :(得分:1)

这应该适合你:

$('form').submit(function(e) {
    e.preventDefault();
    var that = this;
    $.post('url', function() {
        that.submit();
    });
});

e.preventDefault()停止默认表单提交。然后你可以在dom元素上调用.submit()来执行一个jQuery处理程序没有捕获的提交。

答案 2 :(得分:0)

您可以使用一个变量来标记是否已收到ajax响应。 这可能比取消绑定'submit'事件处理程序要优雅一点,但这是另一个想法。

var ajaxResponse = false;

$('form').submit(function() {
    var form = $(this);
    if( ajaxResponse == false ){
      $.post('url', function() {
          ajaxResponse = true;
          // Do something
          form.submit();
      });
      return false;
    }else{
      return true;
    }
});
相关问题