Změna jednoho selectu v závislosti na druhém
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- toka
- Člen | 253
Javascriptová obsluha za pomocí jQuery:
function loadData(value) {
jQuery.get({link loadData!}, {"value": value}, function(data) {
jQuery('#frmformMujFormular-data').replaceWith(data);
}, "html");
}
Handle, který je volán ajaxem a vrací nově naplněný select:
public function handleLoadData($value) {
$form = $this->getComponent('formMujFormular');
$data = $this->model->getData($value);
$form['data']->setItems($data);
echo $form['data']->getControl();
$this->terminate();
}
Příklad formuláře (částečný):
protected function createComponentFormMujFormular() {
$form = new AppForm;
...
$form->addSelect('rizeni', 'Tento select řídí druhý:', $rizeni)
->getControlPrototype()->onchange('loadData(this.value);');
$form->addSelect('data', 'Tento select je řízen prvním:', $data);
...
return $form;
}
Stačí jako nástin? Nezkoušeno! Sepsal jsem to z hlavy bez možnosti testu. Jinak na fóru určitě najdeš, když budeš hledat – pro mne bylo snazší to znovu sepsat :-) Momentálně jsem na velmi pomalém připojení.