Een HTML-formulier is een formulier om gegevens in te vullen dat opgenomen is in een webpagina en dat door middel van HTML is gecodeerd.

HTML-formulieren werden in 1993 geïntroduceerd in de HTML+. Die specificatie werd later enigszins aangepast en vooral uitgebreid met de mogelijkheid om bestanden via de webbrowser te verzenden (RFC 1867[1]). Voor toepassing in XHTML is een volgende uitbreiding ontwikkeld onder de naam XForms.

HTML-formulieren zorgen ervoor dat op het wereldwijde web tweezijdige communicatie plaats kan vinden. In die zin zijn ze essentieel voor het succes van het WWW.

Gebruik

HTML-formulieren zijn bedoeld om de gebruiker informatie te laten invullen en op te laten sturen naar de een URL op een webserver. Daar staat dan een bestand dat de opgestuurde gegevens verwerkt. Het kan ook dienstdoen voor interactiviteit in een webpagina, zonder dat er iets verstuurd wordt, met behulp van HTML-scripting. Hoe die verwerking precies plaatsvindt, is variabel. Er zijn verschillende mogelijkheden. Enkele toepassingen zijn:

Hieraan zijn verschillende toepassingen toe te voegen.

Elementen

In HTML-formulieren kunnen de volgende soorten invoervelden worden gebruikt.

Interactie

Toen Netscape in 1995 de eerste browser met JavaScript introduceerde, werd het mogelijk om de waarden in formuliervelden aan te passen met behulp van een script. Andere browsers volgden snel. Het zou nog enige jaren duren voordat het mogelijk werd om de tekst in de HTML zelf aan te passen. Daarom werden formulieren ook gebruikt om interactieve webpagina's te maken. Een eenvoudig voorbeeld is de "javascript clock", met een tekstveld waarin de tijd meeloopt. Een ander voorbeeld is een rekenmachine in JavaScript. Dergelijke formulieren hebben soms geen verstuurknop en kunnen niet derhalve opgestuurd worden.

In sommige gevallen wordt dergelijke interactie wel gecombineerd met de mogelijkheid om een formulier op te sturen. Een voorbeeld daarvan kan zijn een webpagina om een offerte voor een hypotheek aan te vragen. Na het invoeren van enkele financiële gegevens wordt in het formulier al een voorlopige berekening gemaakt. Als de berekening bevalt kan de bezoeker zijn persoonlijke gegevens er bij zetten en het formulier opsturen.

De waarde van alle soorten velden is met JavaScript aan te passen, behalve die van het "bestand"-veld. Dat laatste is van belang om te voorkomen dat een webpagina automatisch bestanden van de computer van de gebruiker kan laten opsturen. De maker van de webpagina zou kunnen gokken waar een belangrijk bestand op de computer van bezoekers staat, dat invullen en door JavaScript het formulier automatisch laten versturen.

Methoden om een formulier te versturen

Met de "methode" om een formulier te versturen worden twee verschillende dingen bedoeld. Ten eerste welke actie er gedaan wordt om het formulier te versturen, en ten tweede op welke wijze het formulier wordt verstuurd. De benodigde actie is meestal aangegeven met een verzendknop, maar ook met de Enter-toets kan het formulier vaak worden verzonden. Ook met JavaScript kan de opdracht "verzend formulier" worden gegeven.

De tweede methode om het formulier te versturen staat in de HTML-code, de gebruiker heeft daar geen invloed op, het wordt door de browser afgehandeld. Er zijn twee methoden om een formulier te versturen en twee manieren waarop de browser het codeert. De browser doet eerst de codering en vervolgens wordt het verstuurd. In alle gevallen worden de ingevulde velden omgezet tot paren van naam (key) en waarde (value). Elk veld in het formulier heeft in de HTML-code een naam gekregen, deze naam wordt gebruikt als naam. Datgene wat er is ingevuld (of aangevinkt of anderszins gekozen) wordt verstuurd als de waarde. Bij zoekmachines is soms in de browser te zien hoe deze naam-waardecombinatie eruitziet. Zo levert Google een querystring die er zo uitziet: http://www.google.nl/search?hl=nl&q=wikipedia&btnG=Zoeken. Dit betekent dat in het veld met de naam "q" de waarde "wikipedia" was ingevuld, dat het veld (of in dit geval de knop) met de naam "btnG" de waarde "Zoeken" had en dat het veld met de naam "hl" de waarde "nl" had. Dit laatste veld is overigens een "verborgen" veld, onzichtbaar voor de bezoeker, maar de waarde wordt wel opgestuurd.

Codering

(Zie ook MIME)

Versturen

(Zie ook HTTP)

Opmerkingen

Internet Explorer kent (tot en met versie 6) enkele problemen met formulieren. De meest opvallende is dat een keuzelijst altijd zichtbaar is door bovenliggende lagen van de webpagina heen. In veel webpagina's wordt dit opgelost door een gecompliceerde functie die ervoor zorgt dat keuzelijsten in zijn geheel onzichtbaar worden wanneer er een laag overheen komt te liggen. Een ander probleem is de "multipart/form-data boundary bug", waardoor Internet Explorer in sommige gevallen bij het versturen van bestanden een corrupt bestand doorgeeft.