Toggle() na formuláři funguje naopak

MikKuba
Člen | 76
+
0
-

Ahoj,

Mám celkem jednoduchý formulář, ve kterém pomocí addCondition() a toggle() na RadioListu chci zobrazovat buďto textový input, nebo select. To, že se mi defaultně načtou obě „togglovací“ pole zobrazená mi tak nevadí, ale když vyberu z radioListu možnost „page“, tak se zobrazí input pro URL a když vyberu z radia „url“, zobrazí se select pro stránku. Prostě naopak.

$form->addRadioList('type', 'Typ položky:', ['page' => "Statická stránka", 'url' => "Vlastní URL"])
                                ->addCondition(Form::EQUAL, 'page')
                                ->toggle('select-page')
                                ->elseCondition()
                                ->addCondition(Form::EQUAL, 'url')
                                ->toggle('insert-url')
                                ->endCondition();

$form->addText('page_id', 'Stránka')
                                ->setOption('id', 'select-page')
                                ->setHtmlAttribute('class', 'form-control');

$form->addText('url', 'URL odkaz')
                                ->setOption('id', 'insert-url')
                                ->setHtmlAttribute('class', 'form-control');

V šabloně potom takto:

<div class="form-group">
            <div class="col-sm-3 control-label">{label type /}</div>
            <div class="col-sm-9">{input type }</div>
</div>

<div class="form-group" id="select-page">
                <div class="col-sm-3 control-label">{label page_id /}</div>
                <div class="col-sm-9">{input page_id }</div>
</div>

<div class="form-group" id="insert-url">
                <div class="col-sm-3 control-label">{label url /}</div>
                <div class="col-sm-9">{input url }</div>
</div>

Dole v layoutu pak samozřejmě načítám i JS:

<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>

Zkoušel jsem i z položky „type“ udělat jen klasický checkbox a následující dva inputy zobrazit jen po zaškrtnutí checkboxu, ale taky fungovalo naopak.

David Grudl
Nette Core | 8116
+
0
-

Předpokládám, že to je chyba v masteru, ale stable verze funguje dobře, ne?

MikKuba
Člen | 76
+
0
-

David Grudl napsal(a):

Předpokládám, že to je chyba v masteru, ale stable verze funguje dobře, ne?

Jak to myslíš? Mám nastavené normálně „nette/forms“: „^3.0“. Nebo je s Togglem od Nette 3 potřeba něco jinak? Na starším projektu kde je Nette ještě 2.4 tak tento toggle funguje správně.

David Grudl
Nette Core | 8116
+
0
-

Když dáš composer show, tak ti to řekne, jakou máš staženou verzi. Asi to bude dev-master.

MikKuba
Člen | 76
+
0
-

David Grudl napsal(a):

Když dáš composer show, tak ti to řekne, jakou máš staženou verzi. Asi to bude dev-master.

Jo, byl to dev-master. Každopádně jsem to nastavil na verzi 3.0.0, ale ani s tou mi ten toggle nefunguje správně, pořád stejně opačně :/

David Grudl
Nette Core | 8116
+
0
-

Testoval jsem to s poslední 3.0.6 a funguje to správně.

MikKuba
Člen | 76
+
0
-

Tak to nebylo knihovnou, ale starou verzí netteForms.js, která se načítala. S ní už to funguje dobře :)