Form: selection
number og range
Vi kan spesifisere at vi vil akseptere et heltall innenfor et bestemt område ved hjelp av number
HTML-fragmentet
<fieldset> <legend>Et tall takk</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> <label>Tallet</label> <input type="number" name="tallet" value="0" step="2" min="0" max="10" /> <input type="submit" value="send" /> </form> </fieldset>
Vi prøver oss med range
HTML-fragmentet
<fieldset> <legend>Et tall takk</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> <label>Tallet</label> <input type="range" name="tallet" value="0" step="2" min="0" max="10" /> <input type="submit" value="send" /> </form> </fieldset>
color
Vi vil velge en farge
HTML-fragmentet
<fieldset> <legend>Hvordan skal fargen være</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> <label>Farge:</label> <input type="color" name="fargen" /> <input type="submit" /> </form> </fieldset>
Vi prøver et eksperimet for å sette farge på noe på nettsiden
Velg bakgrunn:
HTML-fragmentet
<p> Velg bakgrunn:<input type="color" onchange="setColor()" name="fargen" id="fargen"/> </p>
og javascriptet
function setColor() { var col=document.getElementById('fargen').value; document.getElementsByClassName('collectable')[0].style.backgroundColor=col; return false; }
Vi ser at vi har tatt input-elementet ut av form-omgivelser, og utfører handlingen når innholdet endres. I noen nettlesere vil det siste slå til når feltet mister fokus. Dette åpner selvsagt for en rekke muligheter for å bruke input-elementet andre steder enn i forms.
date og time
Vi har en rekke muligheter for å bestemme tid
HTML-fragmentet
<fieldset> <legend>Om tid og dato</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> <div><label>Dato:</label> <input type="date" name="dato" /></div> <div><label>Uke:</label> <input type="week" name="uke" /></div> <div><label>Måned:</label> <input type="month" name="mnd" /></div> <div><label>Dato/tid:</label> <input type="datetime" name="tid" /></div> <div><label>Lokalt:</label> <input type="datetime-local" name="lokal" /></div> <div><input type="submit" value="Send" /></div> </form> </fieldset>
email og url
HTML-fragmentet
<fieldset> <legend>Mail</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> E-mail: <input type="email" name="mail" /> <input type="submit" value="Send" /> </form> </fieldset>
HTML-fragmentet
<fieldset> <legend>Webadresse</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> URL: <input type="url" name="url" /> <input type="submit" value="Send" /> </form> </fieldset>
pattern
Så kan man spørre seg hva slags kontroll som foregår på det vi skriver inn i f.eks. email feltet. Hvis vi sjekker spesifikasjonen av email hos W3C [2] finner vi at dette er definert som:
1*( atext / "." ) "@" ldh-str 1*( "." ldh-str )
i noe som heter ABNF 1 Augemented Backus-Naur Form [3] . Vi må anta at implemntasjonen av dette er et regulæruttrykk [1] . Det vi normalt ville gjøre dersom vi ikke hadde innebygd en slik kontroll var å lage et eget regulæruttrykk for syntakskontroll. Og det kan vi faktisk gjøre uten javascriptkoding ved hjelp av egenskapen pattern dersom vi ønsker å endre den gitte kontrollen. F.eks. slik:
HTML-fragmentet
<fieldset> <legend>Mail</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> E-mail: <input type="text" pattern="[A-Za-z0-9!#$%&'*+-/=?^_`{|}~]+@[A-Za-z0-9-]+(.[A-Za-z0-9-]+)*" name="mail" /> <input type="submit" value="Send" /> </form> </fieldset>
Vi har altså brukt et input felt av typen text, og koplet til en kontroll ved hjelp av pattern. Dette åpner selvsagt for en rekke muligheter for kontroll av ymse input. RegExpLib [4] er en kilde for regulæruttrykk. Nedenfor tester vi et regulæruttrykk publisert av Knut Hamang.
HTML-fragmentet er etter samme mønster som eksempelet over
list og datalist
Vi kan også lage en liste av lovlige verdier, datalist, og kople denne til et input-element av typ list
HTML-fragmentet
<fieldset> <legend>Mail</legend> <form action="http://www.it.hiof.no/~borres/cgi-bin/forms/std.py" method="get"> Du kan velge mellom noen reisemål: <input list="byer" name="by"/> <datalist id="byer"> <option value="Paris">Paris</option> <option value="Halden">Halden</option> <option value="Barcelona">Barcelona</option> <option value="London">London</option> </datalist> <input type="submit" value="Send" /> </form> </fieldset>
Eksempel
- Augemented Backus-Naur Form