Validace formulářů – javascriptová kontrola se obejde
- josef.sabl
- Člen | 153
Narážím na zvláštní chování formuláře. Pokud je nevalidní, zobrazí se javascriptová hláška. To je v pořádku. Jenže čas od času se poté formulář i odešle, stránka se přenačte a nad formulářem se objeví i chyby ze server side kontroly.
Píšu čas od času, ale ono je to tak 50 na 50.
Zdá se mi, že to dělá pouze v Google Chrome. Žeby tedy buga v něm?
Verze
PHP 5.3.1
Nette 2.0-beta 24.8.2011
Google Chrome 17.0.942.0 dev-m
- nanuqcz
- Člen | 822
Já jsem se po přechodu na Nette 2.0 divil, že mi v prohlížeči funguje i klientská kontrola, přestože nemám připojený nette-forms.js (nebo jak se jmenuje). Zároveň mi přišlo zvláštní, že prohlížeč při klientské kontrole psal jiné hlášky, než jaké jsem měl nastavené v PHP.
No a bylo to tím, že Nette 2 vkládá do povinných inputů atribut
required
a ten si každý prohlížeč validuje po svém. Není to
i tvůj případ? Máš do stránky vložené java-scripty pro kontrolu
formulářů? :-)
- josef.sabl
- Člen | 153
Jojo, to jsou nové HTML 5 atributy a fungujou mi. Required není problém, ten se neodešle právě kvůli této browser side kontrole. Problémem je ale např. Form:EMAIL. Vyskočí javascriptová hláška „Zadejte platný e-mail“, když ji odkliknu, formulář se odešle, přenačte se stránka a nahoře nad formulářem se zobrazí „Zadejte platný e-mail“ (resp. anglická hláška z Nette, teď to nemám před sebou).
Dělá to opravdu pouze v Chrome, z toho usuzuju, že nedělám nic špatně a je to bug buďto v Chrome nebo v Nette.
- Filip Procházka
- Moderator | 4668
Nette formuláře ti nastavují, aby se HTML5 validace prohlížeče vypínala a nahrazují ji vlastní. Máš je vůbec přilinkované v šabloně? nette.forms.js
- josef.sabl
- Člen | 153
Ehh, máš pravdu v tom, že HTML5 kontrola je vypnutá a nezabírá mi. Pouze v případě, že vypnu js. To jsem v tom mém minulém postu popletl.
Ano, nette.forms.js mám přilinkované:
- Javascriptové hlášky z nette.forms.js vyskakují (ve 100% případů), ale cca v padesáti procentech se pak navíc i odešle formulář a pak zafunguje i server side kontrola.
- Problém jsem zaznamenal pouze v Google Chrome (dodávám, že mám dev channel), v ostatních prohlížečích funguje tak, jak má
Snažil jsem se najít nějakou pravidelnost v tom, kdy se tak děje. Mám takový lehký pocit, že když ve formuláři začnu klikat a něco vyplňovat, tak se chyba tolik neobjevuje. Problém se objevuje častěji v případě, že formulář nechám v default stavu. Ale jak říkám, je to jen lehký pocit, zaznamenané jsou i případy, které to vyvracejí.