Ajax a závislé select boxi
- Budry
- Člen | 88
Zdravím,
podařilo se mi rozhýbat dependentySelectBox ale stále se mi nedaří aby se
automaticky aktualizovali hodnoty závislého select boxu.
v layoutu mám
<script type="text/javascript" src="{$basePath}/js/netteForms.js"></script>
<script type="text/javascript" src="{$basePath}/js/jquery.ajaxform.js"></script>
<script type="text/javascript" src="{$basePath}/js/jquery.nette.js"></script>
<script type="text/javascript" src="{$basePath}/js/jquery.nette.dependentselectbox.js"></script>
ale stále nefunguje, když vypnu js objeví se tlačítko load a všechno funguje jak má, pouze s ajaxem je problém
zbytek kódu:
{block content}
{snippet testForm}
{control testForm1}
{/snippet}
{/block}
$form->addSelect('number', 'Číslo od 1 do 3:', array('1' => '1', '2' => '2', '3' => '3'));
$form->setDefaults(array(
'number' => '2',
));
$form->addDependentSelectBox("selectSubNumber", "Další dělení", $form["number"], array($this, "getNumber"));
if($this->isAjax()){
$form["selectSubNumber"]->addOnSubmitCallback(array($this, "invalidateControl"), "testForm");
}
Mohl by někdo poradit?
Předem díky
- MW
- Člen | 626
Tak v tom pripade ti nemzuze pridat callback na ten select…
Vyzkousej to bez te podminky, jak se ti to bude chovat..
Pak musis prijit na to, proc to nevyhodnocuje jako Ajaxovy pozadavek..
Prosel jsi si vsechny zavisloti, co jsou uvedeny u doplnku? Zkus posledni nette.js.
Dobre vy bylo to zkusit vysledovat ve Firefoxu (FireBugu) v konzoli.. Jsou tam videt chyby..
EDIT: tak jsem to testnul a taky mi to vraci FALSE, nicmene me to funguje :-) Mozna nam nekdo objasni, jakpa to ..
Jo a uka jeste getNumber().. Prijde me, ze to mame jinak stejne..
Editoval MW (14. 10. 2011 13:40)
- Budry
- Člen | 88
getNumber je jen testovací, nic extra v ní není :D
public function getNumber($form, $dependentSelectBoxName) {
$number = $form["number"]->getValue();
$return = array(
'1' => array(
'1_1' => '1_1',
'1_2' => '1_2',
'1_3' => '1_3',
),
'2' => array(
'2_1' => '2_1',
'2_2' => '2_2',
'2_3' => '2_3',
),
'3' => array(
'3_1' => '3_1',
'3_2' => '3_2',
'3_3' => '3_3',
),
);
return $return[$number];
}
Když smažu to
$this->isAjax()
Tak to funguje tak jak má, akorát mi to zobrazuje tlačítko Load. Dělá ti to taky?
EDIT:
Opraveno, už to všechno šlape jak má. Funguje i $this->isAjax();zapoměl
jsem upravit soubor jquery.nette.js jak je v návodu u doplňku.
Dík za rady
Editoval Budry (14. 10. 2011 17:33)
- Tomáš Votruba
- Moderator | 1114
Jestli hledáte hodnoty pro select závislé na jiném selectu, zde je funkční řešení (sám jsem ho nejdříve zprovoznil :))
Editoval Schmutzka (29. 12. 2011 16:21)
- Leinad
- Člen | 23
Schmutzka napsal(a):
Jestli hledáte hodnoty pro select závislé na jiném selectu, zde je funkční řešení (sám jsem ho nejdříve zprovoznil :))
Odkazované řešení už neexistuje :-(
- Tomáš Votruba
- Moderator | 1114
Omlouvám se, hodil jsem to do kuchařky a ani nedal vědět.
Editoval Schmutzka (25. 1. 2012 8:15)