Povolený formát formulářového pole
Než uživateli komplikovaně vysvětlovat, že nemá do vstupního pole formuláře zadávat uvozovky, mezery, nebo jiné znaky, je leckdy lepší zajistit, aby prohlížeč ignoroval nepovolené znaky, takže se v poli formuláře vůbec neobjeví. V tomto článku si ukážeme možné řešení.
Základem všeho je odchytávání stisku klávesy v poli formuláře obsluhou události onkeypress. Při této události vyvoláme vlastní funkci, zjistíme stisknutou klávesu a pokud neodpovídá povolené hodnotě, vrátíme hodnotu false, čímž je stisk klávesy zneplatněn. Využijeme zkušeností se získáváním kódu stisknuté klávesy, jak bylo popsáno v článku Prechod na nové pole formulára pomocou klávesy enter.
Drobným kazem na kráse je fakt, že některé prohlížeče se staví k možnosti zjištění stisknuté klávesy velmi vlažně. Pokud například chceme odchytávat klávesy v poli formuláře u Opery, obdržíme různé nesmysly. Opera sama totiž neví, zda se má chovat jako IE nebo NN, a tak raději podporuje obě metody a obě špatně. Následující skript je připraven tak, aby byl správně funkční v IE, v NN4 a NN6+/Mozille a v ostatních prohlížečích aby alespoň nezpůsoboval chyby. Pro nasazení v intranetu je to řešení ideální, pedant by snad ještě dopsal funkci, která by zkontrolovala obsah polí formuláře a případně nepovolila odeslání formuláře, pokud se objeví nepovolené znaky.
Než budeme pokračovat v dalším výkladu, můžete si prohlédnout naši ukázku, nebo si ji stáhnout v komprimovaném archivu.
Stránka s formulářem může vypadat takto:
<html>
<head><title>Povolený formát formulářového pole</title></head>
<body>
<script language="JavaScript" type="text/javascript" src="intellifields.js"></script>
<form>
Jen alfanumerické znaky:<br />
<input type="text" onkeypress="return alfanumeric(event,1);" size="40" />
<br /><br />
Jen alfanumerické znaky bez diakritiky:<br />
<input type="text" onkeypress="return alfanumeric(event,0);" size="40" />
<br /><br />
Zákaz nebezpečných znaků:<br />
<input type="text" onkeypress="return safechars(event);" size="40" />
<br /><br />
Jen numerické znaky:<br />
<input type="text" onkeypress="return numeric(event);" size="40" />
</form>
</body>
</html>
V polích formuláře jsou volány obslužné funkce události onkeypress, které návratovou hodnotou falsezruší nepovolené znaky. Pole mohou být samozřejmě libovolného typu – text, password nebo textarea. Obslužné funkce jsou definovány v externím souboru intellifields.js:
function getkey(e)
{
var code;
if (!e)
var e = window.event; // nastaveni pro IE
if (e.keyCode)
code = e.keyCode; // IE a Mozilla
else
if (e.which)
code = e.which; // NN4
return code;
}
function numeric(eX)
{
test=getkey(eX);
if (test<48 || test>57)
return false;
}
function alfanumeric(eX,diacritic)
{
test=getkey(eX);
set1=(test>32 && test<48);
set2=(test>57 && test<65);
set3=(test>90 && test<97);
if (diacritic == 1)
set4=(test>122 && test<127);
else
set4=(test>122)
if (set1 || set2 || set3 || set4)
return false;
}
function safechars(eX)
{
test=getkey(eX);
if (test==34 || test==39)
return false;
}
Důležitá je funkce pro zjištění stisknuté klávesy getkey
, která je upravena tak, aby předala kód stisknuté klávesy nezávisle na prohlížeči. Pokud prohlížeč není schopen předat kód stisknuté klávesy, nepředává se nic. Tím se vyhneme chybám v nekompatibilních prohlížečích. (Opera sice nastaví nějaké nesmyslné hodnoty, ale současná verze 6.04 si z návratové hodnoty false nic nedělá a do formuláře je možno psát cokoli.) Následují definice funkcí pro specifickou sadu povolených znaků. Funkce alfanumeric
navíc pracuje s parametrem pro diakritické znaky, které jsou povoleny pouze tehdy, pokud má hodnotu 1.
Můžeme si samozřejmě dopsat funkce pro vlastní sadu povolených znaků. Pro snadné zjištění kódu znaků můžeme třeba upravit funkci getkey tak, aby vypisovala kód právě stisknutého znaku do stavového řádku prohlížeče (window.status=window.event.keyCode;
). Například nedávno publikovaný článek o registraci uživatelů pro Vlastní přesměrovací službu by bylo dobré doplnit o funkci, která znemožní do uživatelského jména zadat nealfanumerické znaky, zejména mezery, podržítka a podobně.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024 -
Zabezpečení e-mailů: Jak můžete chránit vaši firemní komunikaci
13. prosince 2023 -
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024