pridat html element formulare pomoci javascriptu

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

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
+
0
-

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
+
0
-

da se ten balicek instalovat jinak nez prez composer?

Marek Šneberger
Člen | 130
+
0
-

Stáhnout a rozbalit do /libs?

vosy
Člen | 532
+
0
-

dekuji

vosy
Člen | 532
+
0
-

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
+
0
-

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