Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Ošetření vstupu

Aktivity
Avatar
Mario Brunmayr:23.10.2016 1:35

Ahoj, mám tu kod

event.keyCode>57){event.returnValue=false}

který mi teoreticky zabraňuje vložit jiný znak než číslo ale prakticky funguje jen na některých prohlížečích. Je na to nějaké nové řešení které umožňuje zabránit vložení nepovolených znaků do formuláře ?

 
Odpovědět
23.10.2016 1:35
Avatar
Pavol Hejný
Tvůrce
Avatar
Odpovídá na Mario Brunmayr
Pavol Hejný:23.10.2016 2:15

Ahoj,
dá se to řešit elegantněji pomocí HTML5:

<input type="number" name="xxx" min="1" max="5">

Tohle ti zkontroluje, zda je v políčku číslo od 1 do 5 a navíc ti to např. na mobilu vyhodí číselnou klávesnici.

Existuje mnoho způsobů předpřipravených kontrol dat v HTML5 např. email, barva... a navíc si můžeš definovat vlastní pomocí regulérního výrazu.

Pokud však chceš mít jistotu, abys měl data OK např. v databázi, tak je musíš vždy zkontrolovat i na serveru. S číslem to můžeš udělat např. takhle v PHP:

$count = intval($_POST['count']);
Nahoru Odpovědět
23.10.2016 2:15
/^(web )?(app )?developer$/
Avatar
Odpovídá na Pavol Hejný
Mario Brunmayr:23.10.2016 20:11

Toto řešení uživatele pouze upozorní zbarvením inputu že jeho hodnoty jsou nepovolené ale já by jsem si spíše přestavoval něco co užívateli nedovolí nepovolený znak zapsat do inputu a povolí mu pouze zapsat číslice.

 
Nahoru Odpovědět
23.10.2016 20:11
Avatar
Pavol Hejný
Tvůrce
Avatar
Odpovídá na Mario Brunmayr
Pavol Hejný:23.10.2016 23:01

Ahoj,
můžeš použít kombinaci number input a JS. Kontrolovat to pomocí event.keyCode je však zbytečně nízkoúrovňové a např. při pravé tlačítko -> vložit to nebude fungovat.

Tady jsem pro tebe udělal řešení, které funguje:
https://jsfiddle.net/kkxc10pz/

Z hlediska UX to ale podle mého názoru není úplně ono. Myslím, že by skript neměl vůbec zasahovat do obsahů políček, protože člověk často píše "poslepu", ale měl by hlásit chybu, pokud je vstup špatný a donutit uživatele k opravě.

Například kdybych měl formulář pro rezervaci restaurace a tam by byl počet lidí a já bych napsal "max 5", skript by to automaticky předělal na "5" a pokud píšu naslepo, tak odejde chybná informace. Červenání políček + nedovolení formuláře odeslat je mnohem lepší volba.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
23.10.2016 23:01
/^(web )?(app )?developer$/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.