Automatisch hoofdlettergebruik voor mobiel

Dit lijkt misschien de meest oninteressante functie die er bestaat, maar ik denk dat het belangrijk is omdat iedereen niet van typen op mobiel houdt: jij haat het, ik verafschuw het. In Chrome voor Android (vóór Chrome 43 - Bèta vanaf april 2015) heeft een ontwikkelaar weinig controle over hoe de browser de gebruiker kan helpen tekst in te voeren. Als u vandaag op een apparaat typt, kan het er als volgt uitzien:

Merk op dat alles in kleine letters staat, afgezien van enkele waarden waarvan Android herkende dat het een naam was.

Apple heeft in iOS 5 een attribuut geïntroduceerd op HTMLInputElement en HTMLTextAreaElement autocapitalize genaamd, en hiermee kan de auteur van de pagina aangeven hoe de browser het virtuele toetsenbord aan een gebruiker moet presenteren om de tekstinvoer voor de gebruiker te optimaliseren. In de eenvoudigste vorm zou je kunnen aangeven dat een tekstvak automatisch de eerste letter van elke nieuwe zin met een hoofdletter moet beginnen.

Vanaf Chrome 43 ondersteunt Chrome het kenmerk autocapitalize op zowel HTMLInputElement als HTMLTextAreaElement , waarmee u het gedrag van automatisch hoofdlettergebruik van het virtuele toetsenbord kunt controleren en in lijn kunt brengen met Safari op iOS.

autocapitalize is alleen van toepassing op HTMLInputElement programma's waarbij het type- attribuut is ingesteld op: type="text" , type="search" , type="url" , type="tel" , type="email" type="password" . De standaardinstelling is om niet automatisch hoofdletters te gebruiken.

Hier is een eenvoudig voorbeeld waarmee u zinnen in een tekstgebied automatisch met hoofdletters kunt omzetten:

<textarea autocapitalize="sentences">

Welke waarden kan autokapitalisatie aannemen?

De volgende tabel toont de verschillende statussen waarin een invoerelement zich kan bevinden:

Staat Trefwoorden
<input>
<input autocapitalize=off>
Geen hoofdlettergebruik geen [standaard]
uit
<input autocapitalize=characters> Hoofdlettergebruik van karakters karakters
<input autocapitalize=words> Hoofdlettergebruik van woorden woorden
<input autocapitalize=sentences> Zinnen met hoofdletters zinnen

Voor HTMLInputElement is de ongeldige waarde standaard Hoofdlettergebruik van zinnen als het type element type= text of type= search is. Anders is het Geen hoofdlettergebruik .

  • <input autocapitalize="simon"> zou een tekstveld zijn met hoofdlettergebruik van zinnen
  • <input type="email" autocapitalize="simon"> zou een tekstveld zonder hoofdletters zijn.
  • <input> zou een tekstveld zonder hoofdletters zijn.

Voor HTMLTextAreaElement is de ongeldige standaardwaarde Sentences Capitalization . Dit is een wijziging ten opzichte van het standaardgedrag.

  • <textarea autocapitalize="terry"></textarea> zou een tekstgebied zijn met hoofdlettergebruik van zinnen
  • <textarea></textarea> zou een tekstgebied zijn met hoofdlettergebruik .
  • <textarea autocapitalize="none"></textarea> zou een tekstgebied zonder hoofdlettergebruik zijn.

Voor HTMLFormElement hebben we besloten het attribuut niet te implementeren, omdat we hebben ontdekt dat het tegenwoordig zelden op pagina's wordt gebruikt, en wanneer het wel wordt gebruikt, wordt het meestal gebruikt om automatisch hoofdlettergebruik op het formulier volledig uit te schakelen:

<form autocapitalize=off><input></form>

Het bovenstaande is vreemd, omdat de standaardstatus voor HTMLInputElement No Capitalization is.

Waarom gebruik je dit via inputmode ?

inputmode is onder andere bedoeld om hetzelfde type probleem op te lossen. Het ontbrak echter aan browserimplementaties - voor zover wij weten heeft alleen Firefox OS een implementatie en deze wordt voorafgegaan door (x-inputmode) - maar het wordt ook zeer weinig gebruikt op internet. Aan de andere kant wordt autocapitalize al op miljoenen pagina's op honderdduizenden websites gebruikt.

Wanneer moet ik dit gebruiken?

Dit is geen uitputtende lijst van wanneer u autocapitalize moet gebruiken; Er zijn echter een aantal plaatsen waar het helpen van de gebruiker bij het invoeren van tekst van grote waarde is:

  • Gebruik autocapitalization=words als dat zo is
    • De namen van mensen verwachten (let op: niet alle namen volgen deze regel, maar de meeste westerse namen worden zoals verwacht automatisch met een hoofdletter geschreven)
    • Bedrijfsnamen
    • Adressen
  • Gebruik autocapitalization=characters als u het volgende verwacht:
    • Amerikaanse staten
    • Britse postcodes
  • Gebruik sentences voor invoerelementen als u inhoud verwacht die in de normale alineavorm wordt ingevoerd, bijvoorbeeld een blogpost.
  • Gebruik none op TextAreas als u inhoud verwacht die niet wordt beïnvloed, bijvoorbeeld als u code invoert.
  • Als u geen hints wilt, voeg dan geen automatisch hoofdlettergebruik toe.