我目前有一个在IFrame中弹出的表单。按下提交时,它实际上执行了一个javascript函数:
function goSubmit() {
$( "#submitbutton" ).attr("disabled", true);
$( "form" ).submit(functon()); // submit form
$('.modal_close').click(); // close iframe
}
我担心的是,因为结束发生在提交之后,也许框架将在提交之前关闭。这是一个有效的问题吗?如何在执行结束部分之前将其轻松地更改为等待它完成的ajax调用?
更新
我打错了。我的意思是函数中的第二项是表单选择器。我已经修好了。答案 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
}