JS validace formulářů – vlastní typ pravidla
- Foowie
- Člen | 269
Neexistuje/nebylo by vhodné do netteForms.js
metody
Nette.validateRule
přidat možnost přidat vlastní validační
callback? Řekněme něco takového:
Nette.customRules = new Array();
Nette.addRule = function(callback) {
Nette.customRules.push(callback);
};
Nette.validateRule = function(elem, op, arg) {
var val = Nette.getValue(elem);
if (elem.getAttribute) {
if (val === elem.getAttribute('data-nette-empty-value')) { val = null; }
}
for(rule in Nette.customRules) {
var result = Nette.customRules[rule](val, elem, op, arg);
if(result !== null)
return result;
}
...
- Filip Procházka
- Moderator | 4668
Líbí se mi to, ale chtělo by to nějak zapracovat, aby to validační
pravidlo šlo zapsat nějak na jednom místě.
Teď je tam nějaký switch afaik, to by ale neměl být problém.
Vymysli pěkné API a pošli push :)
- redhead
- Člen | 1313
David to má v plánu předělat ( viz Davidův post/moji citaci: https://forum.nette.org/…m-validation?p=2 )
Jinak určitě by to chtělo dělat i včetně podmínek condition a conditionOn.
Editoval redhead (4. 2. 2011 11:34)
- redhead
- Člen | 1313
Zkusil jsem něco udělat a poslal jsem pull request (https://github.com/…tte/pull/186).
Všechna pravidla jsem přepsal do funkcí v Nette.validators kontejneru.
Pokud ve formu uděláte callback pravidlo na nějakou třídu (např.
Helper::validateOdd
), JS se bude snažit zavolat metodu
Nette.validators.odd()
.
- David Grudl
- Nette Core | 8218
Je to tam. Ale po překlopení na novou verzi formulářů se to asi trošku změní.
Vlastní validátor se dá zadat takto:
PHP:
->addRule('MyValidators::size', ...)
JS:
Nette.validators.MyValidators_size = function(elem, args, val) {
....
};
- Ondřej Mirtes
- Člen | 1536
Co se inspirovat touhle AJAXovou validací? Pokud by nebyla přítomná daná funkce na klientovi, sáhlo by se na server…