Skjemaer
Skjemaer lar brukere sende data til serveren - pålogging, registrering, søk, kontaktskjemaer og mer.
Grunnleggende skjema
<form action="/send" method="post">
<label for="name">Navn:</label>
<input type="text" id="name" name="name">
<button type="submit">Send</button>
</form>
Form-elementet
| Attributt | Beskrivelse |
|---|---|
action |
URL dit dataen sendes |
method |
HTTP-metode (get eller post) |
GET vs POST
| Metode | Bruk |
|---|---|
get |
Søk, filtrering (data synlig i URL) |
post |
Pålogging, registrering (data skjult) |
Label og input
Koble label til input
<!-- Metode 1: for/id -->
<label for="email">E-post:</label>
<input type="text" id="email" name="email">
<!-- Metode 2: nøstet -->
<label>
E-post:
<input type="text" name="email">
</label>
Viktig
Alltid bruk <label> - det gjør skjemaet tilgjengelig og klikkområdet større.
Input-typer
Tekst
E-post
Validerer automatisk at det er en gyldig e-postadresse.
Passord
Skjuler det som skrives.
Tall
Telefon
Viser talltastatur på mobil.
URL
Dato og tid
<input type="date" name="birthday">
<input type="time" name="appointment">
<input type="datetime-local" name="meeting">
<input type="month" name="expiry">
<input type="week" name="week">
Farge
Åpner en fargevelger.
Område (range)
Viser en slider.
Skjult felt
Sender data uten å vise det.
Fil
Checkbox og radio
Checkbox (flervalg)
<label>
<input type="checkbox" name="interests" value="sport"> Sport
</label>
<label>
<input type="checkbox" name="interests" value="music"> Musikk
</label>
<label>
<input type="checkbox" name="interests" value="gaming"> Gaming
</label>
Radio (enkeltvalg)
<label>
<input type="radio" name="gender" value="male"> Mann
</label>
<label>
<input type="radio" name="gender" value="female"> Kvinne
</label>
<label>
<input type="radio" name="gender" value="other"> Annet
</label>
Samme name
Radioknapper med samme name tilhører samme gruppe - bare én kan velges.
Textarea
For lengre tekst:
<label for="message">Melding:</label>
<textarea id="message" name="message" rows="5" cols="40"></textarea>
| Attributt | Beskrivelse |
|---|---|
rows |
Antall synlige linjer |
cols |
Antall tegn per linje |
Select (dropdown)
<label for="country">Land:</label>
<select id="country" name="country">
<option value="">Velg land</option>
<option value="no">Norge</option>
<option value="se">Sverige</option>
<option value="dk">Danmark</option>
</select>
Med grupper
<select name="car">
<optgroup label="Svenske">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
</optgroup>
<optgroup label="Tyske">
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</optgroup>
</select>
Flervalg
<select name="skills" multiple size="4">
<option value="html">HTML</option>
<option value="css">CSS</option>
<option value="js">JavaScript</option>
<option value="python">Python</option>
</select>
Datalist
Kombinerer input med forslag:
<input list="browsers" name="browser">
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
<option value="Safari">
<option value="Edge">
</datalist>
Knapper
<button type="submit">Send</button>
<button type="reset">Nullstill</button>
<button type="button">Vanlig knapp</button>
| Type | Funksjon |
|---|---|
submit |
Sender skjemaet |
reset |
Nullstiller alle felt |
button |
Ingen standard handling |
Validering
Required
Må fylles ut.
Pattern
Må matche mønsteret.
Min/max
<input type="number" name="age" min="18" max="99">
<input type="text" name="username" minlength="3" maxlength="20">
Validerings-attributter
| Attributt | Beskrivelse |
|---|---|
required |
Påkrevd felt |
minlength |
Minimum tegn |
maxlength |
Maksimum tegn |
min |
Minimum verdi |
max |
Maksimum verdi |
pattern |
Regex-mønster |
step |
Gyldige intervaller |
Fieldset og legend
Grupper relaterte felt:
<fieldset>
<legend>Personlig informasjon</legend>
<label for="fname">Fornavn:</label>
<input type="text" id="fname" name="fname">
<label for="lname">Etternavn:</label>
<input type="text" id="lname" name="lname">
</fieldset>
<fieldset>
<legend>Kontaktinfo</legend>
<label for="email">E-post:</label>
<input type="email" id="email" name="email">
</fieldset>
Andre attributter
| Attributt | Beskrivelse |
|---|---|
placeholder |
Hjelpetekst i feltet |
value |
Forhåndsutfylt verdi |
disabled |
Deaktivert felt |
readonly |
Kan ikke endres |
autofocus |
Fokus ved sidelast |
autocomplete |
Nettleserforslag |
<input type="text" placeholder="Skriv her..." autofocus>
<input type="text" value="Forhåndsutfylt" readonly>
<input type="text" disabled>
Komplett eksempel
<form action="/register" method="post">
<fieldset>
<legend>Registrering</legend>
<div>
<label for="username">Brukernavn:</label>
<input type="text" id="username" name="username"
required minlength="3" maxlength="20">
</div>
<div>
<label for="email">E-post:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">Passord:</label>
<input type="password" id="password" name="password"
required minlength="8">
</div>
<div>
<label for="birthdate">Fødselsdato:</label>
<input type="date" id="birthdate" name="birthdate">
</div>
<div>
<label for="country">Land:</label>
<select id="country" name="country" required>
<option value="">Velg land</option>
<option value="no">Norge</option>
<option value="se">Sverige</option>
<option value="dk">Danmark</option>
</select>
</div>
<div>
<label>
<input type="checkbox" name="terms" required>
Jeg godtar vilkårene
</label>
</div>
<button type="submit">Registrer</button>
</fieldset>
</form>
Skjemaer og JavaScript
For å håndtere skjemadata med JavaScript, se Events og DOM-referansen.
Oppsummering
| Element | Bruk |
|---|---|
<form> |
Container for skjema |
<input> |
Inputfelt |
<label> |
Beskrivelse av felt |
<textarea> |
Flerlinjet tekst |
<select> |
Dropdown-meny |
<option> |
Valg i select |
<button> |
Knapper |
<fieldset> |
Gruppering |
<legend> |
Tittel for gruppe |
<datalist> |
Forslag til input |