textarea pridanie maxlength

- uestla
- Člen | 799
Já se taky díval do API a zjistil, že to jde :-)
Dokonce se pro tuto informaci nemusí chodit tak „daleko“ – https://doc.nette.org/cs/forms#…
Editoval uestla (21. 6. 2011 22:24)

- 22
- Člen | 1478
HTML tag <textarea> žádný atribut maxlength nemá, takže nelze něco takového ani čekat v Nette formuláři. Takže opravdu je možné to ošetřit jen po odeslání formuláře, ale neřešil bych to flashMessage, ale přes $form->addError() a víc user-friendly by byl určitě javascript, který počítá znaky a oznamí problém uživateli ještě před odesláním formu.
edit: anebo jak říká uestla přes addRule()
Editoval 22 (21. 6. 2011 22:31)

- mkoubik
- Člen | 728
Validace je jedna věc, ale ten user-friendly javascript (který zobrazuje počet zbývajících znaků, případně červeně orámuje textareu při překročení limitu) by tam určitě měl být. Nic nenaštve víc, než když na tebe po odeslání vyskočí nějaká js validace (ideálně alert) a ty nevíš ani o kolik znaků jsi to přetáhl a musíš celý text několikrát přepisovat (#uxfail).

- uestla
- Člen | 799
:-)
OT, ale nešť: http://jsbin.com/atuhe4/6/edit
Editoval uestla (22. 6. 2011 14:25)
- reskator
- Člen | 18
Triviální otázka – jak se dá např. script uvedený v odkazu od „uestla“ aplikovat na textarea, který mám v nette formuláři. Řekněme, že v šabloně mám např. toto:
<div id="odeslat-zpravu">
{form odpovedForm}
<?php $form->render('begin') ?>
<?php $form->render('errors') ?>
<?php echo $form['odpoved']->control ?>
<div class="button"><?php echo $form['save']->control ?></div>
<?php $form->render('end') ?>
{/form odpovedForm}
</div>
Formulářový prvek ‚odpoved‘ je pochopitelně textarea. Ve formu klasicky:
<?php
...
$this->addTextArea('odpoved', '')
->addRule(Form::FILLED, 'Nelze poslat prázdnou zprávu');
...
?>
Editoval reskator (26. 3. 2012 15:03)