【发布时间】:2015-06-05 15:35:44
【问题描述】:
我有一个面向移动用户的网站,它会检查每个 POST 请求的连接性。如果没有互联网连接,我会为用户提示一条错误消息。另外,我希望有一个过渡效果,表明正在提交表单。
我有以下代码:
var progress = 0;
$('div').on('submit', 'form', function (e) {
var thisform = this;
if (progress === 1) {
// check internet connection
var connection = hostReachable();
if (!connection) {
alert('No connection');
setTimeout(function () { // re-allow submission after 8000 ms (not immediately to avoid browser retry)
progress = 0;
}, 8000);
return false;
}
return true;
}
e.preventDefault();
e.stopPropagation();
if (progress === 0) { // first submit
// updated progress value
progress = 1;
//form transition
$('.spinner').show('fast', function () {
$('.pagecontent').fadeOut('fast');
thisform.submit();
});
} else {
// prevent submit retries when no connectivity
return false;
}
});
hostReachable() 是一个使用 xhr 请求检查连接性的函数。
现在的问题是thisform.submit(); 之后表单提交事件似乎没有再次触发。所以if (progress === 1)里面的代码永远不会运行。
我的代码有什么问题?谢谢!
【问题讨论】:
-
在过渡期间,您正在提交表单。我不确定您对代码的期望。
标签: javascript jquery forms post connectivity