Nette:Forms a JS validacia

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

Hladal som, neprisiel som nato, je mozne uplne vypnut pri Nette:Forms validaciu javascriptom ?

David Grudl
Nette Core | 8218
+
0
-

Pomocí

$form->renderer->clientScript = NULL;
// tj. $form->getRenderer()->setClientScript(NULL);

ale koukám, že to nefunguje – opravím.

edke
Člen | 198
+
0
-

V poslednej verzii cez konstrukciu

$form->renderer->clientScript = NULL;

to uz funguje, co je super a vdaka :-)

Ale po hrani s Nette:Forms dalej som prisiel do situacie, kde pouzivam JS v suvislosti toggle() ale clientScript samozrejme JS vypne uplne. Je teda mozne nejako odlisit tieto dve situacie ? Bolo by super, keby Nette:Forms generovali JS pre toggle v pripade ze je vo Forms pouzite, ale vedeli vypnut JS validaciu formulara.

David Grudl
Nette Core | 8218
+
0
-

Validační a „překlapovací“ skripty jsou dostupné v $form->renderer->clientScript->validateScript a $form->renderer->clientScript->toggleScript, takže asi by pomohlo:

$form->render('xxx'); // vynutí inicializaci
$form->renderer->clientScript->validateScript = NULL;

Ale spadá to do oblasti, která nejspíš projde dalším vývojem, tak nezaručuju, že to bude pořád platit.

edke
Člen | 198
+
0
-

V akualnej verzii (106) aj napriek

$form->render('xxx'); // vynutí inicializaci
$form->renderer->clientScript->validateScript = NULL;

vygeneruje pre submit button onclik, ktory vola validateForm()

<tr>
	<td class="label">&nbsp;</td>
	<td class="control"><input type="submit" onclick="return validateForm(this);" class="button" name="apply" id="frmform2-apply" value="Pridať" /> <input type="submit" class="button" name="cancel" id="frmform2-cancel" value="Cancel" /></td>
</tr>
</table>
</div>
<div><input type="hidden" name="_token_" value="117c12270a1e7afc366fd14740c416e3" /></div>
</form>

Javascript ale spravne nie je vygenerovany. Len pri submite je samozrejme volana neexistujuca JS funkcia.

edke
Člen | 198
+
0
-

Este doplnim, deje sa to v situacii, ak na niektory z form elementov zavesim validaciu:

	->addRule(Form::FILLED, 'Fill this');
David Grudl
Nette Core | 8218
+
0
-

Tohle není oblast, která by byla zcela dokončená, systémové řešení nemám… co třeba zkusit $form->renderer->clientScript->validateScript = ' ';

edke
Člen | 198
+
0
-

David Grudl wrote:

Tohle není oblast, která by byla zcela dokončená, systémové řešení nemám… co třeba zkusit $form->renderer->clientScript->validateScript = ' ';

Teraz vygeneroval javascript funkciu na validaciu takto:

function validateForm2(sender) {
	var el, res;
	 return true;
}

Zatial to teda takto moze ostat :-)