【发布时间】:2014-06-16 13:50:20
【问题描述】:
我是 Javascript 和 jQuery 的新手。我想在用户提交表单后显示“loading-gif”,但不知道为什么我的代码不起作用。情况是这样的:
- 表单的 id="form"
- loading-div 有 id="loading" 和 style="display:none"(当然还有其他一些)
- 提交按钮有 class="formtrigger"(并且没有 type="submit")
这是我的javascript(在html页面底部的jquery之后初始化):
$('.formtrigger').click(function() {
$('#loading').show();
$('#form').submit();
});
当我单击按钮时,表单已提交,但未出现 loading-div。我尝试了“$('#loading').show();”这一行没有将它绑定到点击事件上,它就起作用了。我也试过这段代码:
$('.formtrigger').click(function() {
alert('blablabla');
$('#form').submit();
});
这两种说法都奏效了!首先显示警报,然后提交表单。为什么其他代码不起作用?
提前致谢。
编辑:我也尝试了以下变体但没有成功
$('.formtrigger').click(function() {
$('#form').submit();
});
$('#form').submit(function() {
$('#loading').show();
});
和
$('.formtrigger').click(function() {
$('#loading').show();
window.setTimeout($('#form').submit(), 5000);
});
和
//HTML
<button type="submit">...</button>
//JS
$('#form').submit(function() {
$('#loading').show();
});
【问题讨论】:
-
警报会停止处理,而前者不会。提交表单并触发回发..
-
尝试从 click 事件处理程序中删除 .submit() 只是为了测试 .show() 是否正常工作.. 它可能是并且提交只是在你看到它之前重新加载页面跨度>
-
尝试:window.setTimeout($('#form').submit(), 5000);在 .show() 之后
-
您是否尝试设置提交表单时的功能? $('#form').on('sumbit', function(){ $('#loading').css('display','block'); });
-
我也尝试在提交时显示微调器,但它不起作用。在处理表单输入的 php 脚本中,我设置了 sleep(5) 以确保有足够的时间显示微调器。当我从点击事件处理程序中删除 .submit() 时,.show() 函数正在工作!
标签: javascript jquery forms jquery-click-event