kdyby/forms-replicator nefunkční podmínky pro zobrazení inputů

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

Ahoj,
chtěl bych se zeptat, zda někdo nevíte jak vyřešit problém s zapodmínkováním zobrazení různých elementů při dynamickém přidávání containerů pomocí Kdyby/Forms-Replicator.

http://postimg.org/…e/ur9c39otn/
http://postimg.org/…e/ehj60de5n/

Mám tento kus kódu. Po načtení zobrazení závislých inputů funguje v pořádku (viz screen 1). Pokud ale přidám dalšího operátora, přestane fungovat JavaScriptové zapodmínkování a zobrazí se všechny inputy (viz screen 2). Neřešil jste někdo podobný problém?

$operatorCount = 0;
$voiceTariff = $form->addDynamic("voice_tariff", function (Container $container) use ($form, & $operatorCount) {
    $container->addSelect('operator', NULL, $this->prepareArr($this->phoneFacade->getOperatorListForSelect($this->getCountryIdFromLang())))
        ->setPrompt(_('-- vyberte --'));
    $container->addText('other');

    $container->addRadioList('type', NULL, [0 => 'Paušál', 1 => 'Kredit'])
        ->setAttribute('class', 'product-type')
        ->addCondition($form::EQUAL, 0)
        ->toggle('tariff-' . $operatorCount)
        ->toggle('indefinite-' . $operatorCount);
    $container->addRadioList('business_type', NULL, [1 => 'Ano', 0 => 'Ne'])
        ->addCondition($form::EQUAL, 1)
        ->toggle('manage-service-' . $operatorCount);
    $container->addText('tariff')
        ->setOption('id', 'tariff-' . $operatorCount);
    $container->addText('price')
        ->addCondition($form::FILLED)
        ->addRule($form::INTEGER, _('Vyplňte prosím pouze číslo.'));
    $this->addDateSelect($container, 'to', TRUE, 1, 5, TRUE);
    $container->addCheckbox('indefinite')
        ->setOption('id', 'indefinite-' . $operatorCount);
    $container->addCheckbox('manage_service')
        ->setOption('id', 'manage-service-' . $operatorCount);

    //button for removing the new node
    $container->addSubmit("removeNode")
        ->setAttribute('class', 'ajax')
        ->addRemoveOnClick($this->invalidateSnippet('voice_tariff'));
    $operatorCount++;
}, 1);
Oli
Člen | 1215
+
0
-

Pokud ti přestane fungovat javascript, je to proto, protože jsi ho neznovunačetl. Musíš ho buď dát někam do snipetu a tahat při každým ajaxovým požadavku nebo (lépe) do:

$.nette.ext({
	load: function() {

	// some magic

	}
});

Takovej kod pak bude funkcni i po ajaxu