JS validace HTML5 inputu typu number
- radas
- Člen | 225
Ahoj,
mám input ve formuláři
$form->addText('zip_code', 'PSČ')
->setRequired('%label musí být vyplněno.')
->addRule(self::LENGTH, '%label musí obsahovat přesně %d číslic.', 5);
který renderuju v šabloně
<input n:name="zip_code" type="number">
Když pak políčko nevyplním, zobrazí se správně alert „PSČ musí být vyplněno.“. Pokud tam napíšu třeba „abc“, tak se opět zobrazí alert „PSČ musí být vyplněno.“, což se mi zdá pro uživatele matoucí, protože podmínka na vyplnění je splněná. Pokud se vstup změní třeba na „123“, pak už je alert podle očekávání „PSČ musí obsahovat přesně 5 číslic.“.
Pokud v šabloně změním typ „number“ na „text“, tak se JS validace chová podle mého očekávání, tzn. i při vstupu „abc“ vyhodí alert „PSČ musí obsahovat přesně 5 číslic“ (podmínka na vyplnění je splněná).
Chci se zeptat, jestli je to vlastnost nebo chyba. Testoval jsem na Nette 2.1.3.
Díky
- David Matějka
- Moderator | 6445
Myslim, ze tohle je „feature“ prohlizece. Pokud do pole „number“ zadas neco jinyho nez cisla, tak to prohlizec ignoruje
- radas
- Člen | 225
Pokud vypnu JavaScript, tak je pravda, že se takto chová HTML5 validace přímo v prohlížeči. Ale nějak nechápu, že se takto chová i nettí validátor. Leda že by prohlížeč předával nettí JS validaci opravdu informaci o tom, že input typu number není vyplněn, pokud obsahuje něco jiného než číslo.