Validace při odeslání tlačítkem s NULLovým validationScope (AJAX)
- uestla
- Backer | 799
Zdravím.
V onSubmit
metodě formuláře, který má dvě tlačítka
(‚register‘ a ‚cancel‘, přičemž ‚cancel‘ má NULLovou
validationScope), mám následující:
if ($form['register']->isSubmittedBy()) {
UserModel::createAccount($form->getValues());
$this->flashMessage('Váš účet byl úspěšně vytvořen. Nyní se můžete přihlásit.', 'success');
}
$this->redirect('Auth:login');
Na formuláře mám pak navěšenou onsubmit metodu (přičemž náš formulář má přidělenou class ‚ajax‘):
$('form.ajax').live('submit', function (event) {
event.preventDefault();
$(this).ajaxSubmit();
});
Když ale formulář odešlu přes AJAX tlačítkem ‚cancel‘, neprovede se očekávané přesměrování, ale validace všech prvků – prostě jako by byl odeslán prvním tlačítkem. S vypnutým JS se přesměruje v pořádku.
V čem může být zádrhel? Předem díky (Nette 1.0-dev)…
Editoval uestla (28. 5. 2010 14:43)
- uestla
- Backer | 799
srigi napsal(a):
Nainstaluj si do Firefoxu bud „Tamper data“ alebo „httpfox“ a porovnaj obe odoslania. Je mozne, ze ajax submit neposiela name=>value tlacitka, ktore bolo stacene. Nejako to v tom ajaxsubmit napodobni aby sa to posielalo.
Je to pravda, když navěsím ajaxSubmit()
na formulář, tak se
stisknuté tlačítko neposílá – je třeba to navěsit na submit
tlačítka:
$('form.ajax :submit').live('click', function (event) {
event.preventDefault();
$(this).ajaxSubmit();
});
S tím ale vyvstává další problém, a sice že při odeslání se provede jak validace na straně klienta (klasické alerty), tak ale také odeslání AJAXem. O tom už jsem četl tady, a nevím, jestli existuje „hezčí“ řešení…
Editoval uestla (28. 5. 2010 14:53)