popup window picker do text inputu
- richard
- Člen | 60
Chtel bych pridat do formlare tlacitko vedle text inputu, ktere otevre popup okno, ktere nasledne vrati hodnotu do tohoto inputu. Mohl by mi nekdo napovedet kudy se vydat? Do sablony formulare se mi to nechce cpat (zatim) a ->setOption(‚description‘,…) si chci nechat na description. Pokud by si dal nekdo tu praci a vysvetlil jak udelat vlastni formularovy prvek ktery podedi text input a navesi za nej button tak bych byl velice vdecen. Mam 2.0 a plavu, plavu.
- Filip Procházka
- Moderator | 4668
Já bych ti doporučil nechat si vygenerovat scaffold formuláře (aby jsi ho nemusel vypisovat ručně) a pak si to upravit.
- Ot@s
- Backer | 476
richard napsal(a):
Chtel bych pridat do formlare tlacitko vedle text inputu, ktere otevre popup okno, ktere nasledne vrati hodnotu do tohoto inputu. Mohl by mi nekdo napovedet kudy se vydat? Do sablony formulare se mi to nechce cpat (zatim) a ->setOption(‚description‘,…) si chci nechat na description. Pokud by si dal nekdo tu praci a vysvetlil jak udelat vlastni formularovy prvek ktery podedi text input a navesi za nej button tak bych byl velice vdecen. Mam 2.0 a plavu, plavu.
Nedávno jsem to řešil, takže tady je hrubý koncept (netestováno), dokud
to mám v hlavě. Uprav si to dle vlastních potřeb (místo požadovaného
buttonu mám tag a
).
PHP:
class MujPopupInput extends \Nette\Forms\Controls\TextInput
{
public function getControl() {
$control = parent::getControl();
$container=Html::el();
$container->add($control);
// pridany odkaz na popup pro vyber z ciselniku
$container->add(
Html::el('a')->class('popup ico_folder')->href( $this->getForm()->presenter->link('Popup:dial', array('ff4filling'=>$control->attrs['id'])) )->setText('výběr')
);
return $container;
}
}
JS pro tag <a class="popup">
(nutné JQuery):
// popup odkazy do okna
$('.popup').popupWindow({
centerScreen: 1,
scrollbars: 1,
resizable: 1,
width: 700
});
JS v template popup okna:
$('.returnvalue').click(function(){
window.opener.jQuery("#"+{$ff4filling}).val( $(this).attr('rel') );
window.close();
return false;
});
Kde (pro tento konkr. příklad):
- v okně
Popup:dial
máš vGETu[ff4filling]
ID input pole, kam budeš vracet vybranou hodnotu (převeď si ji do šablony, ať JS ví, kam uložit hodnotu) - v okně/presenteru
Popup:dial
generuješ tabulku s číselníkem a pro výběr hodnoty použiješ<a href="#" rel="**hodnota**" class="returnvalue">vyber</a>
(do atributu rel dáš hodnotu, co chceš do input pole)