HTML-kielellä tehdyissä lomakkeissa Web-sivuilla voi olla muun muassa seuraavanlaisia kenttiä:
Return- tai enter-näppäimen painamisella eri kentissä voi olla hyvin erilaisia vaikutuksia. Kyse ei varsinaisesti ole rivinvaihtokoodeista vaan näppäimistä, mutta on olennaista, milloin rivinvaihtonäppäimen painaminen aiheuttaa rivinvaihtokoodin sisällyttämisen lomakedataan ja milloin ei. |
Tekstirivin syötössä alkuperäisenä ideana oli se, että jos lomakkeessa on vain yksi tekstinsyöttökenttä, selain voisi käsitellä return- tai enter-näppäimen painalluksen lomakkeen lähettämispyyntönä. Tämä ei aiheuta mitään rivinvaihtokoodia lähtevään lomakedataan (esim. hakusanoihin). Tämä sopii hyvin yksinkertaisiin hakulomakkeisiin:
Tällöin on huomattava, että jos lomakkeessa olisi esimerkiksi valintanapeilla valittavia vaihtoehtoja, jotka tarkemmin ohjaavat hakua, käyttäjä saattaa tulla lähettäneeksi lomakkeen liian aikaisin. Hän ehkä ajatteli kirjoittaa ensin hakusanat ja sitten kiinnittää huomionsa nappeihin, mutta "vaistonvaraisesti" lopetti tekstin kirjoittamisen enterillä. Hakulomakkeissa tämä ei ole kovin vakavaa, koska haun voi uusia, mutta se voi olla ikävää, jos lomakkeella tilattiin auto ja oletusarvona oli Rolls Royce.
Erityisiä hankaluuksia on aiheuttanut se, että Internet Exploreriin
tuli versiossa 4 "parannus": edellä kuvattu idea toimii myös
silloin, kun lomakkeessa on useita tekstirivikenttiä.
Tämä saattaa joissakin erikoistapauksissa; ks. esim.
lomakettani nyyseistä tehtäviä hakuja varten, jota tämän
ansiosta voi IE:llä käyttää niin, että esim. kirjoittaa vain meiliosoitteen
yhteen kenttään ja painaa enteriä, jolloin saa listan artikkeleista,
joiden From
-kentässä on kyseinen osoite. Mutta
yleisesti tämä piirre on erittäin huono. Ks.
Alan Flavellin
kirjoitusta
Submit form by hitting ENTER?
Käytännössä
Yleisemmin tällainen enterin tai returnin käyttö on esimerkki kyseisten näppäinten käytöstä valintaan tai vahvistukseen. Tämä saattaa olla jossain määrin hämäävää, koska sillä loogisesti ottaen ei ole rivinvaihdon kanssa muuta tekemistä kuin että voidaan tulkita, että kyse on tyhjän rivin syöttämisestä. Esimerkiksi tekstipohjaisissa käyttöliittymissä on tavallista, että valikosta valitaan vaihtoehto menemällä sen kohdalle ja painamalla enteriä. (Toinen tavallinen vaihtoehto on välilyöntinäppäin, mutta tämä tietysti riippuu ohjelmasta.) Vastaavasti ohjelma saattaa kysyä vahvistusta jonkin toimenpiteen suorittamiselle, oletusarvojen hyväksymiselle tms. siten, että pelkän enterin painaminen merkitsee vahvistusta. Tilanteesta riippuu, onko tämä mielekästä. Varmempi varmistus on toki sellainen, jossa käyttäjän pitää kirjoittaa esim. yes ja painaa enteriä. Mitä tärkeämmästä toimenpiteestä on kyse, sitä hyväksyttävämpää on vaatia ylimääräistä näpyttelyä.
Monirivisessä tekstikentässä
perusajatuksena on mahdollistaa mielivaltaisen tekstimäärän syöttö.
Käytännössä selaimet asettavat tälle
joitakin rajoituksia. Mutta erityisesti ideana on, että
textarea
-elementin rows
- ja
cols
-määrite ilmoittavat vain näkyvän alueen koon;
sekin on sarakkeiden määrän osalta lähinnä viitteellinen ainakin silloin,
kun kirjasimet eivät ole tasalevyisiä. Tarkoitus ja
joidenkin selainten käytäntö on,
että käyttäjä voi kirjoittaa mielivaltaisen pitkiä rivejä ja niin monta
riviä kuin haluaa, vaikka tämä "rullauksen" takia voikin olla hankalaa,
jos näkyvän alueen koko ylitetään. Kun käyttäjä kirjoittaessaan
vaihtaa riviä (painaa returnia tai enteriä), dataan
tulee mukaan rivinvaihtokoodi. Sen esitys on tässä yhteydessä
lisäksi tarkoin määritelty, siitä riippumatta, mikä on käytetyn
tietokonejärjestelmän "oma" esitysmuoto: CR LF, jonka selain
lomakedataa koskevien koodaussääntöjen mukaan esittää
ns. URL-koodatussa muodossa
. Lomaketta käsittelevä
ohjelma yleensä "näkee" tämän datan kuitenkin sellaisen liitynnän
kautta, että ohjelmassa voidaan suoraan testata rivinvaihtoa tyyliin
if(merkki=='\n')
(tietenkin kunkin ohjelmointikielen
sääntöjen mukaan). Yksityiskohdat riippuvat siitä, millaisia rutiineita
käytetään, mutta edellä sanottu pätee esim. yleisesti käytettyyn
CGI.pm
-moduliin.
Valitettavasti ainakin Internet Explorer ja Opera toimivat väärin. Ne jakavat tekstiä eri riveille omia aikojaan (tekstinkäsittelyohjelmien tapaan). Tosin tämä koskee vain näkyvää esitysmuotoa, sillä itse lomakedataan ne eivät sisällytä mitään tästä johtuvia rivinvaihtoja. Mutta tästä seuraa, että käyttäjä ei näe, mikä on hänen kirjoittamansa ja siten itse datan mukana lähtevä rivinvaihto.
Asia voidaan korjata IE:n osalta lisäämällä
textarea
-elementtiin määrite wrap="off"
.
Tällainen määrite ei kuulu mihinkään HTML-spesifikaatioihin,
mutta se siis tarvitaan, jos halutaan IE:n toimivan
spesifikaation mukaisesti!
IE ja Netscape, ainakin niiden tarpeeksi uudet versiot, tunnistavat myös
määritteen
wrap="hard"
, mutta sen aiheuttamat ns. kovat rivinvaihdot ovat
vielä pahempi vaihtoehto: selain lisäilee todellisia rivinvaihtoja dataan siten,
että muun haitan lisäksi käyttäjän on mahdotonta syöttää pitempää riviä kuin
cols
-määrite ilmoittaa. (Lomakkeen tekijä ei tietenkään voi
luottaa tällaiseen rajoitukseen, koska se on selainkohtainen ja
muutenkin kierrettävissä.)
- Lisätietoja wrap
-määritteestä on
dokumenttini
How to limit the number of characters entered in a
textarea
in an HTML form kohdassa
Implementations, especially wrapping.
Jos lomakedatan käsittelyssä halutaan huolehtia siitä, että rivit eivät ole liian pitkiä jatkokäsittelyyn mennessään, täytyy käsittelevän ohjelman joka tapauksessa varautua pilkkomaan tai katkomaan rivejä. Tarvittaessa on tietysti annettava käyttäjälle huomautus tai varoitus tai ehkä palautettava lomake korjaamista varten.
Lomakkeenlähetyskentän input type="submit"
tyypillinen graafinen selain toteuttaa "nappina" (fyysistä painonappia
tai nappulaa muistuttavana näyttöoliona, engl. button), ja
tavallisin tapa käyttää sitä on napsauttaa (engl. click) sitä
hiiren avulla. On kuitenkin mahdollista - useissa
graafisissakin selaimissa - siirtyä lomakkeen kentästä toiseen
sarkausnäppäintä (tab key) käyttämällä. Ja kun on tällä tavoin siirrytty
lomakkeenlähetyskenttään, enterin painaminen yleisesti vastaa napsauttamista
eli lähettää lomakkeen. Tämä on käytettävyyttä olennaisesti parantava seikka
muun muassa siksi, että se mahdollistaa lomakkeen täyttämisen ja lähettämisen
silloinkin, kun hiirtä ei ole tai sitä ei syystä tai toisesta voi käyttää.