Lomaketarkistuksista ja virheilmoituksista

Lomakkeiden toteuttamien saavutettavina on hyvinkin mahdollista HTML-tekniikoilla. Periaatteessa saavutettavan lomakkeen toteuttaminen on helppoa mutta kokonaisuuteen liittyy monia yksityiskohtia. Yksi näistä on lomakkeiden syötteen tarkistus ja käyttäjien informoiminen väärin annetusta syötteestä. Aihe on hyvin laaja eri käyttötilanteineen, joten käsittelen tässä vain yhtä tilannetta, jollaiseen törmäsin hetki sitten verkossa.

Validointi ja ilmoitukset

Lomakkeella annettu syöte validoidaan eli tarkistetaan ennen lomakkeen datan lähettämistä. Riippuen lomakkeen laajuudesta ja siinä pyydetyistä syötteistä, voidaan validointi tehdä heti syötteen valmistuttua ja käyttäjän siirtyessä seuraavaan lomakekenttään tai vasta kun lomakkeen kaikki kentät on täytetty. Lomakkeen syötteellä on periaatteessa kolme esitystapaa, muotoa, jotka kaikki voivat olla oikein omassa kontekstissaan:

  • käyttäjän antama syöte siinä muodossa kuin se on annettu
  • järjestelmään tallennettavan datan muoto
  • tiedon tulostuksessa käytetty esitystapa (kansalliset muotoiluasetukset ym.)

Syötteen tulkitseminen virheelliseksi ja virheilmoitukset tai korjaukset

Tämän artikkelin innoittaja oli eräs julkishallinnon palvelu, jossa puhelinnumeron syöttäminen antoi mielestäni huonon virheilmoitukset. Oikeammin virheilmoitus oli täysin tarpeeton ja turha, sillä olin antanut numeron valmiiksi siinä muodossa, joksi järjestelmä sen halusi. Mikä siis oli virhe?

Verkkosivulla kysyttiin puhelinnumeroani. Annoin numeroni kansainvälisessä muodossa kuten olen tottunut tekemään. Numero oli siis muotoa +358 44 1234 567. (numero ei ole oikea puhelinnumeroni vaan esimerkki). Sivu kuitenkin antoi minulle virheilmoituksen ilmoittaen, että “puhelinnumerossa voi olla enintään 10 numeroa“. 

En meinannut ymmärtää missä vika sillä numeroni oli oikein. Yritin syöttää sen ilman välilyöntejä mutta siitäkään ei ollut apua. Numero oli kaikinpuolin oikea ja oikein muotoiltu mutta sivu ei sitä hyväksynyt. 

Vasta hetken kuluttua huomasin, että alla oli teksti

+358 +358441234567

Tästä oivalsin, että järjestelmä haluaa itse lisätä maatunnuksen numeron eteen sillä nyt se esiintyi numerossa kahteen kertaan. Poistin maatunnuksen omasta syötteestäni ja numero läpäisi tarkistuksen.

Mutta mikä tässä meni pieleen?

virheilmoitus puhelinnumeron syötteestä lomakkeella

Turhat virheilmoitukset

Lomakkeen tarkistuksessa hylättiin täydellisesti oikein annettu ja oikein muotoiltu syöte vaikka tarkistuksessa olisi ollut helppo todeta numeron oikeellisuus. Korjaaminen siirrettiin takaisin käyttäjälle vaikka tällaisen triviaalin korjaustoimen olisi pitänyt olla lomakkeen tekijän tehtävä. Numerosta olisi ollut helppo tunnistaa, että se sisältää jo maatunnuksen. Ja kun numero annetun maatunnuksen kanssa on muodoltaan hyväksyttävä, olisi sen voinut hyväksyä sellaisenaan. 

Vaihtoehtoisesti lomakkeella olisi voinut kertoa, että anna puhelinnumerosi ilman maatunnusta. Ohjeessa olisi voinut olla suoraan esimerkki numeron esittämistavasta, jolloin edellä mainittua virhetulkintaa ei olisi tapahtunut. 

Minä annoin syötteen väärin mutta en ole ainoa. Olen kuullut saman kokemuksen samasta lomakkeesta toiselta käyttäjältä. 

Tarinan opetus

Lomakkeen tarkistuksen ei pitäisi sekoittaa datan esitysmuotoa ja/tai tallennusmuotoa käyttäjän antaman syötteen muotoon. Jos käyttäjä antaa puhelinnumeron välilyönnillä erotettuna kolmen ja neljän numeron ryhmiin ei sitä voi pitää virheenä. Jos datan tallennusmuoto ei saa sisältää välilyöntejä, voidaan ne ohjelmallisesti poistaa ja lisätä jälleen tulostettaessa. Kyse on yksinkertaisesta syötteen muotoilusta. Sama koskee esimerkin mukaisesti maatunnuksen antamista. Järjestelmä voi sen hyväksyä, poistaa tai lisätä numeroa esitettäessä. 

Joissain tilanteissa voi jäädä epäilys korjauksen oikeellisuudesta. Silloin syöte on varmistettava. Tällaisissa tilanteissa joissa tulkinta on selvä, ei pitäis vaivata käyttäjää.