Vlastní JS validace pro některé inputy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Mikulas Dite
Člen | 756
+
0
-

Dá se nějak potlačit netteForms.js pro určité vstupy formuláře? Konkrétně bych rád pro vlastní komponentu udělal jinou validaci, ale pro zbylé inputy tyhle scripty použil. Podle Nette.initForm se to moc ovlivnit nedá. Stačilo by mi, kdybych mohl upravit validační pravidla.

Mikulas Dite
Člen | 756
+
0
-

Vyřešil jsem to přepsáním Nette.validateForm() v jiném skriptu (tzn. nejdřív se musí načíst netteFoms.js a až poté tohle) a přidáním jedné podmínky. Moc hezké řešení to ale není.

Lopata
Člen | 139
+
0
-

Nestačilo by prostě upravit/odebrat datový atribut z těch inputů, které nechceš validovat?

Mikulas Dite
Člen | 756
+
0
-

Asi ne, protože když je to vlastní typ, který browser nezná, tak js dostane od browseru type = text. Navíc podmínka v netteForms.js je jenom

...
if (!(elem.nodeName.toLowerCase() in {input:1, select:1, textarea:1}) || (elem.type in {hidden:1, submit:1, image:1, reset: 1}) || elem.disabled || elem.readonly) {...}
Lopata
Člen | 139
+
0
-

Rozumíme si? Když spustím skript

<script>
document.getElementById('dontValidateThisOne').setAttribute('data-nette-rules','');
</script>

tak se nic validovat prostě nebude…

Mikulas Dite
Člen | 756
+
0
-

Aha, tak to je mi ale k ničemu. Já to validovat chci, ale vlastním skriptem.

Edit: ano, můžu pro rules použít jiný atribut, ale to už je hezčí řešní ten overload.

Editoval Mikulas Dite (10. 12. 2010 22:26)