netteForms.js – onValidate obdoba
- Jiří Nápravník
- Člen | 710
Jde nějak udělat s netteForms, abych tam mohl přidat ještě nějakou vlastní validaci?
Mám několik políček, každý má svoje validatory, které kontroluje netteForms, a já teď potřebuji, pokud je vše v pohodě u tohohle, tak aby se zavolala ještě jedna funkce, která zkonbtroluje ještě nějaký věci (co nejdou formulářema řešit). Zkrátka nějaká proměnná, kam navážu callback, který když vyplním tak je před samotným submittem zavolán?
- Jiří Nápravník
- Člen | 710
To mám samozřejmě načtené, ale nijak to neřeší můj problém. Píšu, že potřebuju nějak přidat vlastní validaci k té Nette validaci.
A nejde ot řešit (javascriptově v rámci) netteForms apod. Budou to dynamicky načtené inputy, pak je všechny vezmu, a zkontroluju v ajaxu proti databázi, no to je zbytečné popisovat.
Zkrátka potřebuji nějaký takovýhle workflow:
- provede se standardní netteForms
- provede se moje nete validace (pokud je netteforms ok)
- pokud je i 2 splneno pak se teprve odešle
- David Matějka
- Moderator | 6445
mohlo by stacit stacit:
$("#my-form").submit(function(e) {
var $form = $(this);
var valid = true;
...
if(!valid) {
e.preventDefault();
return false;
}
});
- Jiří Nápravník
- Člen | 710
To sice funguje, ale přesně obráceně provede se prvně moje validace a pak teprve ta netteForms… Jedině, že bych nějak odchytil ten netteFarms onsubmit, a pak ho odbindoval a pak nabindoval az za tenhle, ale jestli to vubec pujde…
Je škoda, že nějaký takový event není možno navázat v rámci
- Jiří Nápravník
- Člen | 710
Díky za hint, nakonec jsem to pořešil hodně podobně, jen jsem si takhle „přetížíl“ Nette.initForm.
var netteInitForm = Nette.initForm;
Nette.initForm = function(form) {
if($(form).data('netteForms') === 'off'){
return;
}
netteInitForm(form);
};
ted mi staci formu u ktereho nechci netteForms nastavit data-nette-forms=„off“ a pak si poresim validaci vlastni. Přičemž si zavola validateForm z netteForms ručně
Editoval Jiří Nápravník (14. 1. 2014 22:46)
- Jiří Nápravník
- Člen | 710
Mě teď stačí a funguje to řešení, co jsem postl. A myslím, že by se tohle bilo s nette.ajax.js – aspoň je doporuováno, všechny tyhle ajax věci vyřadit…
- Vojtěch Dobeš
- Gold Partner | 1316
V nette.ajax.js
by to šlo řešit následovně myslím:
$.nette.ext('custom-forms-validation', {
before: function (xhr, settings) {
if (!settings.nette || !settings.nette.form) {
return;
}
var form = settings.nette.form; // here is jQuery encapsulated element of form
var result = ... do your custom validation ...
return result; // if false, will prevent request from being executed
}
});
Mělo by se to provést až po Nette validaci.
- Jiří Nápravník
- Člen | 710
vojtech.dobes Já ten form odesílám klasicky ne-ajaxově, či-li before: využít nemohu. Já chci jen ajaxem provést tu samotnou kontrolu a pak klasický click. či-li to navazuji v load
- honos
- Člen | 109
Jiří Nápravník napsal(a):
vojtech.dobes Já ten form odesílám klasicky ne-ajaxově, či-li before: využít nemohu. Já chci jen ajaxem provést tu samotnou kontrolu a pak klasický click. či-li to navazuji v load
A proč vlastne neprovedes odesilani ajaxove a nasledne provest presmerovani kam potrebujes?