Naar de inhoud
Gratis naslagwerk over HTML
HTML leren en naslaan
Naslag / Formulieren

Het element <input type="text">

<input>-elementen van het type text maken eenvoudige eenregelige tekstvelden.

Code
<label for="name">Name (4 to 8 characters):</label>

<input
  type="text"
  id="name"
  name="name"
  required
  minlength="4"
  maxlength="8"
  size="10" />
Resultaat in de browser

Waarde

Het value-attribuut is een tekenreeks die de huidige waarde bevat van de tekst die in het tekstveld is ingevoerd. Je kunt deze in JavaScript ophalen met de eigenschap value van HTMLInputElement.

JS
let theText = myTextInput.value;

Als er geen validatiebeperkingen gelden voor de input (zie Validatie voor meer details), kan de waarde een lege tekenreeks ("") zijn.

Aanvullende attributen

Naast de globale attributen en de attributen die op alle <input>-elementen van toepassing zijn, ongeacht hun type, ondersteunen tekstinputs de volgende attributen.

list

De waarde van het list-attribuut is de id van een <datalist>-element dat zich in hetzelfde document bevindt. De <datalist> biedt een lijst met vooraf gedefinieerde waarden die aan de gebruiker worden voorgesteld voor deze input. Waarden in de lijst die niet compatibel zijn met het type worden niet in de voorgestelde opties opgenomen. De geleverde waarden zijn suggesties, geen vereisten: gebruikers kunnen uit deze vooraf gedefinieerde lijst kiezen of een andere waarde opgeven.

maxlength

De maximale tekenreekslengte (gemeten in UTF-16-code-units) die de gebruiker in de text-input kan invoeren. Dit moet een geheel getal zijn van 0 of hoger. Als er geen maxlength is opgegeven, of een ongeldige waarde is opgegeven, heeft de text-input geen maximumlengte. Deze waarde moet ook groter dan of gelijk zijn aan de waarde van minlength.

De input zal niet voldoen aan de beperkingsvalidatie als de lengte van de tekstwaarde van het veld groter is dan maxlength UTF-16-code-units. Beperkingsvalidatie wordt alleen toegepast wanneer de waarde door de gebruiker wordt gewijzigd.

minlength

De minimale tekenreekslengte (gemeten in UTF-16-code-units) die de gebruiker in de text-input kan invoeren. Dit moet een niet-negatief geheel getal zijn dat kleiner is dan of gelijk is aan de waarde die door maxlength is opgegeven. Als er geen minlength is opgegeven, of een ongeldige waarde is opgegeven, heeft de text-input geen minimumlengte.

De input zal niet voldoen aan de beperkingsvalidatie als de lengte van de tekst die in het veld is ingevoerd, korter is dan minlength UTF-16-code-units. Beperkingsvalidatie wordt alleen toegepast wanneer de waarde door de gebruiker wordt gewijzigd.

pattern

Het pattern-attribuut is, indien opgegeven, een reguliere expressie waaraan de value van de input moet voldoen om de beperkingsvalidatie te doorstaan. Het moet een geldige JavaScript-reguliere expressie zijn, zoals gebruikt door het type RegExp, en zoals gedocumenteerd in onze gids over reguliere expressies; de vlag 'u' wordt opgegeven bij het compileren van de reguliere expressie, zodat het patroon wordt behandeld als een reeks Unicode-codepunten in plaats van als ASCII. Er mogen geen schuine strepen rond de patroontekst worden opgegeven.

Als het opgegeven patroon niet is opgegeven of ongeldig is, wordt er geen reguliere expressie toegepast en wordt dit attribuut volledig genegeerd.

Opmerking

Gebruik het title-attribuut om tekst op te geven die de meeste browsers als tooltip weergeven om uit te leggen wat de vereisten zijn om aan het patroon te voldoen. Je moet ook andere verklarende tekst in de buurt opnemen.

Zie Een patroon opgeven voor meer details en een voorbeeld.

placeholder

Het placeholder-attribuut is een tekenreeks die een korte hint aan de gebruiker geeft over wat voor soort informatie in het veld wordt verwacht. Het moet een woord of korte zin zijn die het verwachte type data toont, in plaats van een verklarend bericht. De tekst mag geen regeleinden of carriage returns bevatten.

Als de inhoud van het besturingselement één richting (LTR of RTL) heeft, maar de placeholder in de tegenovergestelde richting moet worden weergegeven, kun je Unicode-tekens voor de bidirectionele opmaakalgoritme gebruiken om de richting binnen de placeholder te overschrijven; zie Hoe Unicode-besturingstekens voor bidi-tekst te gebruiken voor meer informatie.

Opmerking

Vermijd het gebruik van het placeholder-attribuut indien mogelijk. Het is niet zo semantisch nuttig als andere manieren om je formulier toe te lichten, en kan onverwachte technische problemen met je inhoud veroorzaken. Zie Toegankelijkheidsoverwegingen bij <input> voor meer informatie.

readonly

Een booleaans attribuut dat, indien aanwezig, betekent dat dit veld niet door de gebruiker kan worden bewerkt. De value kan echter nog steeds worden gewijzigd door JavaScript-code die de eigenschap value van HTMLInputElement rechtstreeks instelt.

Opmerking

Omdat een alleen-lezen veld geen waarde kan hebben, heeft required geen effect op inputs waarop ook het readonly-attribuut is opgegeven.

size

Het size-attribuut is een numerieke waarde die aangeeft hoeveel tekens breed het invoerveld moet zijn. De waarde moet een getal groter dan nul zijn, en de standaardwaarde is 20. Aangezien tekenbreedtes variëren, is dit mogelijk niet exact en zou hier niet op vertrouwd moeten worden; de resulterende input kan smaller of breder zijn dan het opgegeven aantal tekens, afhankelijk van de gebruikte tekens en het lettertype (de font-instellingen die worden gebruikt).

Dit stelt geen limiet in op hoeveel tekens de gebruiker in het veld kan invoeren. Het geeft alleen ongeveer aan hoeveel er tegelijk zichtbaar zijn. Om een bovengrens voor de lengte van de invoerdata in te stellen, gebruik je het maxlength-attribuut.

spellcheck

Het globale attribuut spellcheck wordt gebruikt om aan te geven of spellingscontrole voor een element moet worden ingeschakeld. Het kan worden gebruikt op elke bewerkbare inhoud, maar hier bekijken we specifieke aspecten die te maken hebben met het gebruik van spellcheck op <input>-elementen. De toegestane waarden voor spellcheck zijn:

falseSchakel spellingscontrole voor dit element uit.
trueSchakel spellingscontrole voor dit element in.
"" (lege tekenreeks) of geen waardeVolg het standaardgedrag van het element voor spellingscontrole. Dit kan gebaseerd zijn op de spellcheck-instelling van een ouder-element of andere factoren.

Een invoerveld kan spellingscontrole ingeschakeld hebben als het readonly-attribuut niet is ingesteld en het niet is uitgeschakeld.

De waarde die wordt geretourneerd bij het lezen van spellcheck weerspiegelt mogelijk niet de daadwerkelijke status van de spellingscontrole binnen een besturingselement, als de voorkeuren van de user agent de instelling overschrijven.

Tekstinputs gebruiken

<input>-elementen van het type text maken eenvoudige, eenregelige inputs. Je moet ze overal gebruiken waar je wilt dat de gebruiker een eenregelige waarde invoert en er geen specifieker inputtype beschikbaar is voor het verzamelen van die waarde (bijvoorbeeld als het gaat om een datum, URL, e-mail of zoekterm, heb je betere opties beschikbaar).

Basisvoorbeeld

HTML
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input type="text" id="uname" name="name" />
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>

Dit wordt als volgt weergegeven:

Resultaat in de browser

Bij verzending wordt het naam/waarde-paar name=Chris naar de server gestuurd (als "Chris" als waarde van de input werd ingevoerd vóór verzending). Je moet niet vergeten het name-attribuut op het <input>-element op te nemen, anders wordt de waarde van het tekstveld niet meegestuurd met de verzonden data.

Placeholders instellen

Je kunt een nuttige placeholder in je tekstinput opnemen die een hint geeft over wat er moet worden ingevoerd, door het placeholder-attribuut te gebruiken. Bekijk het volgende voorbeeld:

HTML
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input
      type="text"
      id="uname"
      name="name"
      placeholder="Lower case, all one word" />
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>

Je kunt hieronder zien hoe de placeholder wordt weergegeven:

Resultaat in de browser

De placeholder wordt doorgaans weergegeven in een lichtere kleur dan de voorgrondkleur van het element, en verdwijnt automatisch zodra de gebruiker begint met het invoeren van tekst in het veld (of wanneer het veld programmatisch een waarde krijgt door het value-attribuut in te stellen).

Fysieke grootte van het invoerelement

De fysieke grootte van het invoervak kan worden bepaald met behulp van het size-attribuut. Hiermee kun je het aantal tekens opgeven dat de tekstinput tegelijk kan weergeven. Dit beïnvloedt de breedte van het element, waardoor je de breedte in tekens in plaats van in pixels kunt opgeven. In dit voorbeeld is de input bijvoorbeeld 30 tekens breed:

HTML
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input
      type="text"
      id="uname"
      name="name"
      placeholder="Lower case, all one word"
      size="30" />
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>
Resultaat in de browser

Validatie

<input>-elementen van het type text hebben geen automatische validatie die erop wordt toegepast (aangezien een eenvoudige tekstinput elke willekeurige tekenreeks moet kunnen accepteren), maar er zijn enkele client-side validatieopties beschikbaar, die we hieronder bespreken.

Opmerking

HTML-formuliervalidatie is geen vervanging voor server-scripts die ervoor zorgen dat de ingevoerde data in het juiste formaat staat. Het is veel te eenvoudig voor iemand om de HTML aan te passen zodat de validatie wordt omzeild of volledig verwijderd. Het is ook mogelijk dat iemand je HTML volledig omzeilt en de data rechtstreeks naar je server verzendt. Als je server-side code de ontvangen data niet valideert, kan er een ramp gebeuren wanneer verkeerd geformatteerde data (of data die te groot is, van het verkeerde type is, enzovoort) in je database terechtkomt.

Een opmerking over styling

Er zijn nuttige pseudo-klassen beschikbaar voor het stylen van formulierelementen om de gebruiker te helpen zien wanneer hun waarden geldig of ongeldig zijn. Dit zijn :valid en :invalid. In deze sectie gebruiken we de volgende CSS, die een vinkje plaatst naast inputs met geldige waarden en een kruisje (X) naast inputs met ongeldige waarden.

CSS
div {
  margin-bottom: 10px;
  position: relative;
}

input + span {
  padding-right: 30px;
}

input:invalid + span::after {
  position: absolute;
  content: "✖";
  padding-left: 5px;
}

input:valid + span::after {
  position: absolute;
  content: "✓";
  padding-left: 5px;
}

Deze techniek vereist ook een <span>-element dat na het formulierelement wordt geplaatst, dat dient als houder voor de iconen. Dit was nodig omdat sommige inputtypen in sommige browsers icoontjes die er direct achter zijn geplaatst niet goed weergeven.

Input verplicht maken

Je kunt het required-attribuut gebruiken als een eenvoudige manier om het invoeren van een waarde verplicht te stellen voordat formulierverzending is toegestaan:

HTML
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input type="text" id="uname" name="name" required />
    <span class="validity"></span>
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>
CSS
div {
  margin-bottom: 10px;
  position: relative;
}
input + span {
  padding-right: 30px;
}
input:invalid + span::after {
  position: absolute;
  content: "✖";
  padding-left: 5px;
}
input:valid + span::after {
  position: absolute;
  content: "✓";
  padding-left: 5px;
}

Dit wordt als volgt weergegeven:

Resultaat in de browser

Als je probeert het formulier te verzenden zonder dat er een gebruikersnaam is ingevoerd, geeft de browser een foutmelding weer.

Lengte van de invoerwaarde

Je kunt een minimale lengte (in tekens) opgeven voor de ingevoerde waarde met behulp van het minlength-attribuut; gebruik op vergelijkbare wijze maxlength om de maximale lengte van de ingevoerde waarde, in tekens, in te stellen.

Het onderstaande voorbeeld vereist dat de ingevoerde waarde tussen 4 en 8 tekens lang is.

HTML
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input
      type="text"
      id="uname"
      name="name"
      required
      size="10"
      placeholder="Username"
      minlength="4"
      maxlength="8" />
    <span class="validity"></span>
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>
CSS
div {
  margin-bottom: 10px;
  position: relative;
}
input + span {
  padding-right: 30px;
}
input:invalid + span::after {
  position: absolute;
  content: "✖";
  padding-left: 5px;
}
input:valid + span::after {
  position: absolute;
  content: "✓";
  padding-left: 5px;
}

Dit wordt als volgt weergegeven:

Resultaat in de browser

Als je probeert het formulier te verzenden met minder dan 4 tekens, krijg je een passende foutmelding (die per browser verschilt). Als je probeert meer dan 8 tekens in te voeren, laat de browser dit niet toe.

Opmerking

Als je een minlength opgeeft, maar geen required opgeeft, wordt de input als geldig beschouwd, omdat de gebruiker niet verplicht is een waarde op te geven.

Een patroon opgeven

Je kunt het pattern-attribuut gebruiken om een reguliere expressie op te geven waaraan de ingevoerde waarde moet voldoen om als geldig te worden beschouwd (zie Valideren tegen een reguliere expressie voor een snelcursus over het gebruik van reguliere expressies om inputs te valideren).

Het onderstaande voorbeeld beperkt de waarde tot 4-8 tekens en vereist dat deze alleen kleine letters bevat.

HTML
<form>
  <div>
    <label for="uname">Choose a username: </label>
    <input
      type="text"
      id="uname"
      name="name"
      required
      size="45"
      pattern="[a-z]{4,8}" />
    <span class="validity"></span>
    <p>Usernames must be lowercase and 4-8 characters in length.</p>
  </div>
  <div>
    <button>Submit</button>
  </div>
</form>
CSS
div {
  margin-bottom: 10px;
  position: relative;
}

p {
  font-size: 80%;
  color: #999999;
}

input + span {
  padding-right: 30px;
}

input:invalid + span::after {
  position: absolute;
  content: "✖";
  padding-left: 5px;
}

input:valid + span::after {
  position: absolute;
  content: "✓";
  padding-left: 5px;
}

Dit wordt als volgt weergegeven:

Resultaat in de browser

Voorbeelden

Je kunt goede voorbeelden zien van tekstinputs die in context worden gebruikt in onze artikelen Je eerste HTML-formulier en Hoe je een HTML-formulier structureert.

Technische samenvatting

Waarde Een tekenreeks die de tekst in het tekstveld vertegenwoordigt.
Gebeurtenissen change en input
Ondersteunde gemeenschappelijke attributen autocomplete, list, maxlength, minlength, pattern, placeholder, readonly, required en size
IDL-attributen list, value
DOM-interface

HTMLInputElement

Impliciete ARIA-rol zonder list-attribuut: textbox
met list-attribuut: combobox

Zie ook

Verwante elementen