-1
我有一些JavaScript需要在提交表单之前运行。部分运行的JavaScript是异步运行的分块文件上传器:(resumable.js)。jQuery在回调中解除绑定
该库提供了一个函数来监听上传完成的时间。当我在这个函数内部解绑定提交事件时,表单不会提交,页面只是重新加载。但是,当解除绑定不在函数内部时(尽管在文件上传器完成其工作之前),表单会提交。
此代码不提交表单(r
是分块的文件上传的对象实例):
$('#Form1').submit(function (e) {
var form = $(this);
e.preventDefault();
r.upload(); //async
r.on('complete', function() {
form.unbind('submit').submit();
});
});
这段代码提交表单(但显然太早,之前上传能做的工作):
$('#Form1').submit(function (e) {
var form = $(this);
e.preventDefault();
r.upload(); //async
form.unbind('submit').submit();
});
为了澄清,我希望发生的一连串事件是这样的:
- 用户点击提交。
- JavaScript上传器将文件上传到Web服务。
- 上传完成后,即可发布网页表单。
编辑:问题的症结是:
r.on('complete', function() {
form.unbind('submit').submit();
});
上面的代码片段不会以同样的方式表现为这样:
form.unbind('submit').submit();
,我不能图为什么。
你想要一个传统的表单文章,整页重新加载,对不对? – Tomalak
它应该没问题 - 你在做什么看起来没问题。你确定'complete'处理程序正在被解雇吗?只要在里面放一个'console.log',你就可以看到它发生了。 – Archer
下面是一个工作示例... https://jsfiddle.net/smqkeveo/ – Archer