Odeslani formulare pomoci selectu?
- krissott
- Člen | 48
Caues potreboval bych nejakym zpusobem odeslat formular ihned po vyberu nejakeho optionu v selectu.
Klasicka metoda je tahle : <select name=„state“ onchange=„this.form.submit();“>
Nevite nekdo jestli jde tohle udelat i v Nette?
nasel jem neco jako $addSelect(…)->onChange[]… , ale nefungovalo.
Dikes
- David Grudl
- Nette Core | 8218
->addSelect(...)->elementPrototype->onChange(...)
->addSelect(...)->controlPrototype->onchange(...)
- krissott
- Člen | 48
Tak nevim co delam spatne ale nemuzu ani za boha pridelit selectu dalsi
atribut.
Pise mi to tohle : Cannot read an undeclared property
SelectBox::$elementPrototype.
Kdyz to zkusim na samotny <form> podle manualu takto :
$form->getElementPrototype()->id = ‚login-form‘;
Tak vse ok.
Ale jakmile zkusim neco takoveho :
$form[‚select_name‘]->getElementPrototype()->id =
‚login-form‘;
nebo jak si psal ty primo za kontrukci selectu : ->addSelect(…)->elementPrototype->onChange(…)
tak to vraci porad tu samou hlasku : Cannot read an undeclared property SelectBox::$elementPrototype.
- krissott
- Člen | 48
Mám jeste jednu otazecku.
Treba jdu na to spatne, poradte.
Resim casovy filtr u vypisu tabulky.
Nad tabulkou je defaultne select „Year“
po zvoleni roku by se mel objevit select „Month“
po zvoleni mesice by se mel objevit select „Day“.
takze jsem to chtel resit takhle:
$form->addSelect('year','Rok:',$years)->controlPrototype->onchange("submit();");
if($form->isSubmitted()){
$values=$form->getValues();
if(isset($values['year']))
$form->addSelect('month','Měsíc:',$months)->controlPrototype->onchange("submit();");
if(isset($values['month']))
$form->addSelect('day','Den:',$days)->controlPrototype->onchange("submit();");
}
Jenze to nejde.
Prisel jsem na to ze cokoliv je za metodou isSubmitted() se nenacte spravne
pr.1
if($form->isSubmitted()){
$values= $form->getValues();
print_r($values);
}
$form->addSelect('year','Rok:',$years)->controlPrototype->onchange("submit();");
$form->addSelect('month','Měsíc:',$m)->controlPrototype->onchange("submit();");
$form->addSelect('day','Den:',$days)->controlPrototype->onchange("submit();");
pr.2
$form->addSelect('year','Rok:',$years)->controlPrototype->onchange("submit();");
$form->addSelect('month','Měsíc:',$m)->controlPrototype->onchange("submit();");
$form->addSelect('day','Den:',$days)->controlPrototype->onchange("submit();");
if($form->isSubmitted()){
$values= $form->getValues();
print_r($values);
}
Priklad 1 nevytiskne nic priklad 2 vytiskne vsechny hodnoty.
Jako by isSubmitted vse mazal…
Sorry za tak dlouhy dotaz…
- David Grudl
- Nette Core | 8218
Hodnoty prvků formuláře se načtou při volání
isSubmitted()
. Pokud se poté formulář změní, tak je potřeba
manuálně hodnoty znovunačíst metodou processHttpRequest()
.