过早提交jquery表格而不关闭窗口?

时间:2014-01-14 12:58:02

标签: javascript jquery ajax

我目前有一个在IFrame中弹出的表单。按下提交时,它实际上执行了一个javascript函数:

function goSubmit() {
    $( "#submitbutton" ).attr("disabled", true); 
    $( "form" ).submit(functon());   // submit form
    $('.modal_close').click();  // close iframe
}

我担心的是,因为结束发生在提交之后,也许框架将在提交之前关闭。这是一个有效的问题吗?如何在执行结束部分之前将其轻松地更改为等待它完成的ajax调用?

更新

我打错了。我的意思是函数中的第二项是表单选择器。我已经修好了。

3 个答案:

答案 0 :(得分:3)

您可以通过以下方式同步提交表单:

$.ajax({   
   type: 'POST',   
   url: $('#yourform').attr('action'),
   async: false,
   data: $('#yourform').serialize(),
   success: function(data){
      $('.modal_close').click();
   }
}); 

这应该做你想要的。

答案 1 :(得分:2)

您必须将您的点击功能绑定到ajax:complete。这样,它将在表单提交事件完成后调用。

function goSubmit() {
    $( "#submitbutton" ).attr("disabled", true); 
    $("#myform").bind('ajax:complete', function() {
        $('.modal_close').click();  // close iframe
    });
}

myform是表单的ID。如果您不知道,可以执行以下操作:

function goSubmit() {
    $( "#submitbutton" ).attr("disabled", true); 
    var $myform = $("#submitbutton").closest("form");
    $myform.bind('ajax:complete', function() {
        $('.modal_close').click();  // close iframe
    });
}

答案 2 :(得分:2)

他们有两种方式 1)你抽出时间关闭 例如:

function goSubmit() {
    $( "#submitbutton" ).attr("disabled", true); 
    $( "#submitbutton" ).submit(functon());  // submit form
    setTimeout(function(){
    $('.modal_close').click();  // close iframe
    },1000)
}

或 2)在提交函数内部调用ajax调用并等待响应 例如:

function goSubmit() {
    $( "#submitbutton" ).attr("disabled", true); 
    $( "#submitbutton" ).submit(functon(event){
     event.preventDefault();
     $.post('/path_to_submit',{
       parameters:parameters,
       .
       .
       },function(data){
         $('.modal_close').click(); // close iframe
        })
    });  // submit form

}