Falls gleichzeitig mit einem Submit ein Download gestartet werden soll, muss der Submit zuerst abgefangen werden und ein Download initiiert werden.
<button
type="submit"
class="w-100 btn btn-dark rounded-0"
data-download="/download/file.pdf">
Button-Text
</button>
window.addEventListener("load", () => {
const fid = "#download-form";
const cr_form = document.querySelector(fid);
const cr_submitForm = document.querySelector(fid + " button[type=submit]");
if (cr_form != null) cr_form.addEventListener("submit", function(e) {
/* submit abfangen: */
e.preventDefault();
/* Einen geschummelten Autodownload vorbereiten: */
var element = document.createElement('a');
element.href = cr_submitForm.dataset.download;
/* regex, um nur den Dateinamen zu haben: */
element.download = /[^/]*$/.exec(cr_submitForm.dataset.download)[0];
cr_form.appendChild(element);
/* Klick imitieren: */
element.click();
/* und wieder alles verschwinden lassen: */
cr_form.removeChild(element);
/* eigentlichen Submit ausführen (via form post/get): */
$(this).submit();
})
});