我想在用户提交表单之后但在他离开页面之前显示一个注释。
目前我正在使用此(缩减示例代码):
$('form').submit(function(event) {
$('.note').show();
setTimeout(function() {
$('form').unbind().submit();
}, 2000);
return false;
});
这有效,但似乎不太好。还有其他方法,比如函数$.delayPropagation(2000);
吗?
PS:该笔记涵盖整个屏幕,因此在此期间用户将无法再次提交。
答案 0 :(得分:4)
这是延迟操作的适当方法。
您可能实际上想要首先取消绑定事件以停止多个呼叫(您当前有一个2秒钟的窗口,他们可以再次提交)。
作为标准做法,您应该只运行一次jQuery选择器(使用temp var来保存结果)。 $
前缀也是命名jQuery变量的另一个标准。现在这意味着下面的代码将分别支持页面上的多个表单。
$('form').submit(function(event) {
var $form = $(this);
$('.note').show();
$form.unbind()
setTimeout(function() {
$form.submit();
}, 2000);
return false;
});
您必须立即return false
以避免阻止浏览器。
注意:
Ajax
作为表单帖子,然后有延迟,然后转到新页面 setTimeout
是推迟执行代码的最ubiquitous方法。 注意:我只想在帖子中使用术语ubiquitous
:)