Formhåndtering
Styring med JavaScript
Med JavaScript kan vi bl.a....
Opsamle og vise data
Nulstille
Fjerne browser-popup
JavaScript
querySelector()
function()
addEventListener()
textContent
)
Recap
JavaScript
querySelector()
function()
addEventListener()
textContent
)
Recap
querySelector(
function()
addEventListener()
classList
)
JavaScript
Recap
function()
addEventListener()
classList
querySelector(
)
JavaScript
Recap
<!DOCTYPE html>
<html lang="da">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="css/general.css" />
<title>HTML dokument</title>
</head>
<body>
<h1>Overskrift</h1>
<p>Lorem ipsum...</p>
<button>Klik på mig</button>
</body>
</html>h1<>function()
addEventListener()
classList
querySelector(
)
h1JavaScript
Recap
<!DOCTYPE html>
<html lang="da">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="css/general.css" />
<title>HTML dokument</title>
</head>
<body>
<h1>Overskrift</h1>
<p>Lorem ipsum...</p>
<button>Klik på mig</button>
</body>
</html><>function()
addEventListener()
classList
querySelector(
)
h1JavaScript
Recap
<!DOCTYPE html>
<html lang="da">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="css/general.css" />
<title>HTML dokument</title>
</head>
<body>
<h1>Overskrift</h1>
<p>Lorem ipsum...</p>
<button>Klik på mig</button>
</body>
</html><>function()
addEventListener()
classList
h1" "
querySelector(
)
JavaScript
Recap
function()
addEventListener()
classList
document.
Kig efter "h1" i HTML-dokumentet
h1" "
querySelector(
)
JavaScript
Recap
function()
addEventListener()
textContent
const heading =
variabel
document.
h1" "
querySelector(
)
JavaScript
Recap
function()
addEventListener()
textContent
const heading =
document.
h1" "
querySelector(
)
JavaScript
Recap
function()
addEventListener()
document.querySelector("h1").
const heading =
document.
h1" "
querySelector(
)
textContent
heading.
JavaScript
Recap
function()
addEventListener()
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
JavaScript
Recap
function() {
addEventListener()
= "Hello JS"
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
JavaScript
Recap
function() {
addEventListener()
}
= "Hello JS"
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
JavaScript
Recap
addEventListener(
button
function() {
}
= "Hello JS"
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
const btn =
document.
" "
querySelector(
)
)
JavaScript
Recap
addEventListener(
)
button
function() {
}
= "Hello JS"
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
const btn =
document.
" "
querySelector(
)
JavaScript
Recap
btn.
addEventListener(
)
button
function
}
= "Hello JS"
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
const btn =
document.
" "
querySelector(
)
() {
JavaScript
Recap
"click", sayHello
button
function
}
= "Hello JS"
heading.
const heading =
document.
h1" "
querySelector(
)
textContent
const btn =
document.
" "
querySelector(
)
btn.
addEventListener(
)
() {
sayHello
JavaScript
Recap
JavaScript
Demo
Form Events
Vi kan "lytte" til formularen
const form = document.querySelector("form");Først laver vi en henvisning
Form Events
const form = document.querySelector("form");
form.addEventListener( , ...);'invalid''submit'Vi kan "lytte" til formularen
Form Events
const form = document.querySelector("form");
form.addEventListener( , ...);'invalid''submit'Lyt efter submit (når jeg indsender)
Vi kan "lytte" til formularen
Form Events
const form = document.querySelector("form");
form.addEventListener( , ...);'invalid''submit'Lyt efter, om der er felter, der er ugyldige
Vi kan "lytte" til formularen
"Gør ikke, som du plejer..."
event.preventDefault();"Gør ikke, som du plejer..."
<a href="something.html">Se mere</a>Hvis vi forhindrer standarden (altså preventDefault()), så ville links ikke navigere
Hvad er standard-funktionaliteten for links?
const firstLink = document.querySelector("a");
function preventLinkFromNavigating(event) {
event.preventDefault(); /* Gør ikke som du plejer */
}
firstLink.addEventListener('click', preventLinkFromNavigating);Don't do this at home...
🚫
Invalid-eventet
function cancelPopup(event) {
event.preventDefault(); /* Gør ikke som du plejer */
}
form.addEventListener('invalid', cancelPopup);Fjern browser-popup
Vi får et invalid-event med
Invalid-eventet
function cancelPopup(event) {
event.preventDefault();
form.querySelector(":user-invalid").focus();
}
form.addEventListener('invalid', cancelPopup, true);
Copy/paste moment
Fjern browser-popup
øvelse 10
Tilføj invalid-event
Sørg for, at browserens default popup-vindue ikke vises ved fejl i formularen.


Submit-eventet
const form = document.querySelector("form");
function handleSubmit(event) {
}
form.addEventListener("submit", handleSubmit);Hvad skal der ske, når jeg submitter?
const form = document.querySelector("form");
function handleSubmit(event) {
// 1. undgå refresh
// 2. samle data op
// 3. vise data
// 4. evt. nustil formular
}
form.addEventListener("submit", handleSubmit);Submit-eventet
Hvad skal der ske, når jeg submitter?
const form = document.querySelector("form");
function handleSubmit(event) {
// 1. undgå refresh
event.preventDefault();
// 2. samle data op
// 3. vise data
// 4. evt. nustil formular
}
form.addEventListener("submit", handleSubmit);Undlad browser refresh
Submit-eventet
const form = document.querySelector("form");
function handleSubmit(event) {
// 1. undgå refresh
event.preventDefault();
// 2. samle data op
// 3. vise data
// 4. evt. nustil formular
form.reset();
}
form.addEventListener("submit", handleSubmit);Nulstil formularen v/ submit
Submit-eventet
øvelse 11
Tilføj submit-event
Stop browserens reload og nulstil felterne med ved submit.

.reset()
.preventDefault()
FormData
Saml felt-værdierne op
FormData-objektet vil blive udfyldt med formularens nuværende nøgler/værdier ved at bruge name-egenskaben for hvert element til nøglerne og deres indsendte værdi til værdierne.

const form = document.querySelector("form");
function handleSubmit(event) {
const formData = new FormData(form);
}FormData-syntaks
Saml felt-værdierne op

const form = document.querySelector("form");
function handleSubmit(event) {
const formData = new FormData(form);
console.log( formData.get("first_name") )
}.get()
Saml felt-værdierne op
Konsollen udskriver nu strengen "Peter"
<input name="first_name" />
const form = document.querySelector("form");
const firstOutput = document.querySelector(".first_output");
function handleSubmit(event) {
const formData = new FormData(form);
firstOutput.textContent = formData.get("first_name");
}.textContent
Vis værdierne
<p>First:
<span class="first_output"></span>
</p>"Peter"
function handleSubmit(event) {
// Hent værdier fra form
const formData = new FormData(form);
// Sæt værdier ind i output-elementer
firstOutput.textContent = formData.get("first_name");
lastOutput.textContent = formData.get("last_name");
}.textContent
Vis værdierne

function handleSubmit(event) {
event.preventDefault();
// Hent værdier fra form
const formData = new FormData(form);
// Sæt værdier ind i output-elementer
firstOutput.textContent = formData.get("first_name");
lastOutput.textContent = formData.get("last_name");
// ...
form.reset();
}Husk det hele...
øvelse 12
Saml værdier op og vis dem
Brug FormData() til at samle værdierne op og textContent til at indsætte værdien i outputtet
.textContent
new FormData()

function handleSubmit(event) {
event.preventDefault();
const formData = new FormData(form);
// ...
optionsOutput.textContent = formData.getAll("my_options").join(", ");
// ...
form.reset();
}Checkboxes
Forms & JS
By Dannie Vinther
Forms & JS
Forms: Håndtering med JS
- 351