我正在尝试显示一个简单的微调器gif同时正在执行提交(这需要一点点因为我必须通过Web服务与提供者建立一些通信)。
所以,我有这个:
$('#gds_form').submit(function() {
var pass = true;
//some validations
if(pass == false){
return false;
}
$("body").prepend('<div class="ui-widget-overlay" style="z-index: 1001;"></div>');
$("body").prepend("<div id ='PleaseWait'><img src='/images/spinner.gif'/></div>");
return true;
});
事实是,.gif没有显示任何动画,就像它被冻结了一样。
为什么?
还有另一种实现方法(请注意我没有使用AJAX,我不想这样做)?
谢谢。
答案 0 :(得分:13)
使用jQuery submit
函数,您可以指定加载图像,如下所示:
$('#form').submit(function() {
$('#wait').show();
$.post('/somepage.htm', function() {
$('#wait').hide();
});
return false;
});
答案 1 :(得分:11)
您是否尝试将图像加载到文档准备就绪,只隐藏它。然后在你的功能中显示它?这样,图像就已经加载并旋转了。
$(document).ready(function() {
$("body").prepend('<div id="overlay" class="ui-widget-overlay" style="z-index: 1001; display: none;"></div>');
$("body").prepend("<div id='PleaseWait' style='display: none;'><img src='/images/spinner.gif'/></div>");
});
$('#gds_form').submit(function() {
var pass = true;
//some validations
if(pass == false){
return false;
}
$("#overlay, #PleaseWait").show();
return true;
});
答案 2 :(得分:1)
您的实施的真正问题是客户端如何知道您的请求何时完成。 Ajax有用的原因之一是因为我们有状态的概念,因此我们可以在客户端等待响应时显示加载器,并在客户端收到响应时删除加载器。
您如何确定与Web服务的通信何时完成?你说你不想使用Ajax,但如果你想要查询服务以确定你的通信是否完成,你可能会看到需要Ajax的东西。
答案 3 :(得分:0)
使用.show()和.hide()在发送时切换加载动画?
答案 4 :(得分:0)
我会在页面上开始使用div,但是如果需要style='display:none'
,请在代码中添加$('#PleaseWait').show()
。
如果您离开display:none
,则可以编辑查看其外观,而无需一次又一次地提交表单。
NB:为方便起见,您可能希望将叠加层和gif
包装在父div中。