SPA: How do I submit a form on an onChange Event without submit button

How do I submit a form on an onChange event of an tag in an SPA, with without triggering the default behaviour(Page reload). I found out, that I can access the form from the event with the .form element. But if I trigger .form.submit() the page reloads although I have stated on:submit|preventDefault.

I prepared an example of my Problem: https://svelte.dev/repl/894212c7c3d847dd961745f5e9d5750a?version=3.46.2

Also is there like a clean/correct/best-practice way of solving this, without using an submit button?

Thanks in advance for your help!


Solution 1:

Grab the data from the form with the FormData constructor. Then POST it with a Fetch, XMLHttpRequest or whatever HTTP tool you prefer.

const myForm = document.getElementById('myForm');
const formData = new FormData(myForm);
const XHR = new XMLHttpRequest(),

XHR.addEventListener( 'load', function( event ) {
    alert('DONE!');
} );

XHR.send( formData );

The clean way is to use a form library for javascript OR plain html forms. What's wrong with reloading the page when they click submit?