2012-06-19 92 views
0

我想在提交表单时编写3秒延迟。现在,提交标准文本淡出,并且通知文本淡入,但在您有机会阅读之前,页面会重新加载。使用jQuery获取页面以延迟重新加载

<script type="text/javascript"> function changeText() { 
$('#free-planner').fadeOut('slow', function() { 
     document.getElementById('free-planner').innerHTML = 'Check your email!'; }); { $('#free-planner').fadeIn('slow', function() { });  
} 
} 
</script> 
+1

好像你应该再重新加载页面的消息中褪色....不是周围的其他方式。 – c0deNinja

+0

你可以用setTimeout包装你的提交代码。 – tjscience

回答

4

首先,防止提交事件,则启动它编程,当你准备..

$('form').on('submit', function(ev) { 
    ev.preventDefault(); 
    form = $(this); 
    fp = $('#free-planner'); 
    fp.fadeOut('slow', function() { 
    fp.text('Check your email!').fadeIn('slow', function() { 
     form.submit(); 
    }); 
    }); 
}); 

所有这些东西或许应该发生后的形式提交。也许你想要一个隐藏的iframe,这是你的表单的目标?然后,您可以提交表单而不更新浏览器中的当前页面。喜欢的东西:

form = $('form'); 
$('body').append($('<iframe>').attr({ name:"hiddenifr", id:"hiddenifr" }).css({ display: 'none' })); 

form.attr('target', 'hiddenifr'); 
form.on('submit', function(ev) { 
    fp = $('#free-planner') 
    fp.fadeOut('slow', function() { 
    fp.text('Check your email!').fadeIn('slow'); 
    }); 
}); 
+0

谢谢,我想我对这是如何工作的一个想法,我不明白这是如何淡出新的fp.text,因为只有一个fp.fadeOut。对于form = $(@);应该@替换为表单类,如下所示:form = $(。submit-form)? – JakePump

+0

或通过ajax提交表单/ json,并根据您的情况使用jQuery事件,更高级但不需要。此外,您可以使用事件将提交与淡入淡出相分离,即关注点分离。可能有助于浏览器兼容性等,因为即使您的gui内容失败,表单也应该提交。 –

+0

做了一些其他的更正 - 两个样本中都应该有淡入淡出效果。 – Julian