validace při formuláři odesílaným ajaxem

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

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

CZechBoY
Člen | 3608
+
0
-

Při ajaxu proběhne validace :-) Ty asi chceš zobrazit error hlášky – vlož form do snippetu a pak ho překresli. Nebo radši vlož formulář do komponenty a překresli celou komponentu formuláře.

Domki
Člen | 310
+
0
-

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)

kolsi
Člen | 131
+
0
-

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.

matopeto
Člen | 395
+
0
-

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?

kolsi
Člen | 131
+
0
-

To by mohlo být ono, jedná se o formulář, který se vykresluje ajaxem. Čekal bych, že Nette toto bude dělat automaticky.

$.nette.ext('afterAjax', {
	complete: function () {

	}
});

Co tedy konkrétně zavolat?

matopeto
Člen | 395
+
0
-

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)