validace při formuláři odesílaným ajaxem
- Domki
- Člen | 310
Mám formulář:
protected function createComponentSendQuestionForm()
{
$form = $this->formFactory->create();
$form->addText('name', 'Jméno:')
->setRequired(TRUE)
->addRule($form::FILLED, 'Zadejte prosím vaše jméno.');
$form->addSubmit('send', 'Poslat dotaz');
$form->onSuccess[] = [$this, 'sendQuestionFormSucceeded'];
return $form;
}
Který vykresluji manuálně a mám přidanou třídu ajax.
Formulář pokud je spravne vyplnen tak se odešle ajaxem.
Pokud není vyplnen tak pri odeslani se nic neprovede(nevyskoci validační
hlaška). Ač bez ajaxu ano.
Jak můžu docílit aby i při ajaxu probehla validace? Díky
- Domki
- Člen | 310
Jo ano nevyskočí mi okno(js alert) s hláškami .
V lattt mam form obalen v snipetu. Překreslení snippetu delam až při
zpracovaní formuláře.
{snippet sendQuestion}
<div n:foreach="$flashes as $flash" n:class="flash, $flash->type">{$flash->message}</div>
{form sendQuestionForm class => "form-horizontal"}
<div class="row">
<div class="form-group col-lg-6">
{label name class=>"col-sm-3 control-label"/}
<div class="col-sm-9">
{input name class=>"form-control"}
</div>
</div>
<div class="form-group">
<div class="col-xs-4 col-sm-3 col-xs-offset-8 col-sm-offset-9">
{input send class=>"form-control btn btn-my ajax"}
</div>
</div>
{/form}
{/snippet}
Editoval Domki (23. 2. 2017 16:32)
- matopeto
- Člen | 395
kolsi napsal(a):
Mám úplně stejný problém – u některých formulářů (send tlačítko s třídou ajax) se stává, že ačkoli mají navěšeno validační pravidlo (např. ->setRequired), tak po stisku tlačítka nevyskočí JS alert, ale formulář se normálně odešle.
nebude to tym, ze prvy po prekresleni snippetu neinicializujete nette.forms na javascriptove validacie pre novy form?
- matopeto
- Člen | 395
v nette ajax je default extension forms
ak nie je zapnuta asi
ju treba len zapnut.
https://github.com/…ette.ajax.js
...
$.nette.ext('forms', {
init: function () {
var snippets;
if (!window.Nette || !(snippets = this.ext('snippets'))) return;
snippets.after(function ($el) {
$el.find('form').each(function() {
window.Nette.initForm(this);
});
});
},
...
Editoval matopeto (9. 3. 2017 11:12)