popup window picker do text inputu

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

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
+
0
-

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
+
0
-

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áš v GETu[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)
richard
Člen | 60
+
0
-

Funguje to. Diky.

Editoval richard (5. 8. 2011 4:38)