-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