Handle form without redirect

This commit is contained in:
Hazem Krimi
2023-11-08 19:07:54 +01:00
parent 770beea258
commit 892ddca71a
3 changed files with 56 additions and 10 deletions
+22 -7
View File
@@ -7,18 +7,13 @@
input, input,
textarea, textarea,
button { button,
#submission-status {
border: none; border: none;
border-radius: 0.5625rem; border-radius: 0.5625rem;
color: var(--text); color: var(--text);
} }
button {
padding: 1rem 2.8rem;
background-color: var(--button-background);
color: var(--white);
}
input, input,
textarea { textarea {
padding: 1.2rem 1.9rem; padding: 1.2rem 1.9rem;
@@ -42,6 +37,26 @@ form textarea {
width: 100%; width: 100%;
} }
form div {
width: 100%;
display: flex;
align-items: center;
justify-content: start;
}
form button, form #submission-status {
padding: 1rem 2.8rem;
background-color: var(--button-background);
color: var(--white);
}
form #submission-status {
margin-left: auto;
width: auto;
display: none;
}
form button { form button {
cursor: pointer; cursor: pointer;
} }
+30 -2
View File
@@ -1,4 +1,32 @@
document.querySelector('form').addEventListener('submit', (event) => { const form = document.querySelector('form');
const submissionStatus = form.querySelector('#submission-status');
form.addEventListener('submit', (event) => {
event.preventDefault(); event.preventDefault();
console.log(new FormData(event.target));
fetch(event.target.action, {
method: event.target.method,
body: new FormData(event.target),
headers: {
Accept: 'application/json',
},
})
.then((response) => {
if (response.ok) {
submissionStatus.innerHTML = 'Message sent successfully!';
submissionStatus.style.display = 'block';
form.reset();
}
})
.catch((error) => {
submissionStatus.innerHTML = 'Error sending message!';
submissionStatus.style.display = 'block';
console.error(error);
})
.finally(() => {
setTimeout(() => {
submissionStatus.innerHTML = '';
submissionStatus.style.display = 'none';
}, 5000);
});
}); });
+3
View File
@@ -17,5 +17,8 @@
required required
rows="10" rows="10"
></textarea> ></textarea>
<div>
<button type="submit">Submit</button> <button type="submit">Submit</button>
<div id="submission-status"></div>
</div>
</form> </form>