return (bytes / 1024 / 1024).toFixed(2);
}
+function enablesubmit(form) {
+ let submit = form.querySelector('input[type="submit"]:disabled');
+ if (!submit) return;
+ submit.disabled = false;
+}
+
function trackupload(input) {
var progress = document.getElementById('progress');
if (!progress) {
if (e.target.status == 200) {
progress.textContent = 'voltooid';
progress.innerHTML += ' <small>(' + showsize(input.files[0].size) + ' MB)</small>';
- input.value = '';
+ window.location.assign(e.target.response);
}
else {
progress.textContent = 'fout';
progress.innerHTML += ': <small>' + e.target.responseText + '</small>';
+ enablesubmit(input.form);
}
progress.style.width = '100%';
input.parentNode.removeChild(cancel);
}, false);
ajax.addEventListener('error', function (e) {
progress.textContent = 'mislukt: ' + e.target.responseText;
+ enablesubmit(input.form);
}, false);
ajax.addEventListener('abort', function (e) {
progress.textContent = 'afgebroken';
input.parentNode.removeChild(cancel);
input.parentNode.removeChild(progress.parentNode);
+ enablesubmit(input.form);
}, false);
ajax.open('POST', input.form.action);
ajax.setRequestHeader('Accept', 'text/plain')
-
- var form = new FormData();
- for (let file of input.files) {
- form.append('image[]', file);
- }
- ajax.send(form);
+ ajax.send(new FormData(input.form));
var cancel = document.createElement('BUTTON');
cancel.textContent = 'Afbreken';
}
document.addEventListener('DOMContentLoaded', e => {
- for (let row of document.forms[0].elements) {
- if (row.name == 'image[]') {
- row.form.onsubmit = () => {
- trackupload(row);
- return false;
- };
- }
+ for (let form of document.forms) {
+ form.addEventListener('submit', e => {
+ if (e.explicitOriginalTarget) {
+ e.explicitOriginalTarget.disabled = true;
+ }
+ if (upload = e.target.querySelector('input[type="file"]')) {
+ if (upload.value) {
+ e.preventDefault();
+ trackupload(upload);
+ }
+ }
+ });
}
});