pridat html element formulare pomoci javascriptu
- vosy
- Člen | 532
ahoj, mam formular kde mam moznost zadani polozek s temito policky
$form->addText('popis', 'Položka:')
->setRequired('Vyplňte prosím "Popis položky".')
->setAttribute('placeholder', 'Popis položky');
$form->addText('pocetKusu')
->setRequired('Vyplňte prosím "Počet kusů".')
->setAttribute('placeholder', 'Ks')
->setAttribute('class', 'mL10 input-mini');
$form->addText('cenaZaKus')
->setRequired('Vyplňte prosím "Cenu za kus".')
->setAttribute('placeholder', 'Cena za kus')
->setAttribute('class', 'mL10 input-small');
$form->addButton('pridatPolozku', 'Přidat')
->setAttribute('class', 'btn btn-small btn-success');
jak bych mohl udelat to aby po kliknuti na button se pomoci javascriptu a treba nejake latte sablony vlozily dalsi policka pro dalsi polozku?
dix
- David Matějka
- Moderator | 6445
https://componette.org/search/?… (zjavascripteni si bud vyres nejak rucne nebo treba pres nette.ajax.js )
Editoval matej21 (23. 9. 2013 20:55)
- vosy
- Člen | 532
takze jsem postupoval dle navodu:
$form = new MyForm;
$form->addDynamic('users', function (Container $user)
{
$user->addText('name', 'Jméno');
$user->addText('surname', 'Příjmení');
$user->addDynamic('addresses', function (Container $address)
{
$address->addText('street', 'Ulice');
$address->addText('city', 'Město');
$address->addText('zip', 'PSČ');
// ...
}, 1);
// ...
$user->addSubmit('add', 'Přidat')->addCreateOnClick(function (Kdyby\Replicator\Container $replicator, Container $user)
{
$user->addText('name', 'Jméno');
});
}, 2);
return $form;
a v latte
{control novaFakturaForm}
formular se vykresly ale pri kliknuti na pridat se zobrazi chyba
strlen() expects parameter 1 to be string, array given
File: …/libs/Kdyby/Replicator/Container.php
$rows[] = array_filter(array_diff_key($item, $subComponents), ‚strlen‘)
?: FALSE;
navic se mi ten formular vykreslil 2x
,??
Editoval vosy (24. 9. 2013 8:58)
- vosy
- Člen | 532
tak uz se stim nejak lepe peru ale, mam takto formular:
$presenter = $opt['presenter'];
$form = new MyForm;
$form->addText('name', 'Položka 1');
// $presenter = $this;
$invalidateCallback = function () use ($presenter) {
/** @var \Nette\Application\UI\Presenter $presenter */
$presenter->invalidateControl('usersForm');
};
// jméno, továrnička, výchozí počet
$replicator = $form->addDynamic('users', function (Container $container) use ($invalidateCallback) {
$container->currentGroup = $container->form->addGroup('člověk', FALSE);
$container->addText('name', 'Položka 2');
$container->addSubmit('remove', 'Smazat')
->addRemoveOnClick($invalidateCallback);
$container->addSubmit('removeAjax', 'Smazat Ajaxem')
->setAttribute('class', 'ajax')
->addRemoveOnClick($invalidateCallback);
}, 1);
/** @var \Kdyby\Replicator\Container $replicator */
$replicator->addSubmit('add', 'Přidat dalšího')
->addCreateOnClick($invalidateCallback);
$replicator->addSubmit('addAjax', 'Přidat dalšího Ajaxem')
->setAttribute('class', 'ajax')
->addCreateOnClick($invalidateCallback);
$form->addSubmit('send', 'Zpracovat')
->onClick[] = callback($this, 'MyFormSubmitted');
$form->addSubmit('sendAjax', 'Zpracovat Ajaxem')
->setAttribute('class', 'ajax')
->onClick[] = callback($this, 'MyFormSubmitted');
// $presenter[$name] = $form;
// $form->action .= '#snippet--usersForm';
return $form;
ale Polozka2 se mi vykresli pred Polozkou 1