toggle na ajaxově načteném formuláři

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

Zdravím, ajaxem si načítám formulář jako modal. Načítám si ho přes handle:

	public function handleCreatePage()
	{
		$tpl = $this->template->setFile(__DIR__ . '/../templates/Homepage/createPage.latte');
		$this->payload->tpl = (string) $tpl;
		$this->sendPayload();
	}

Ve formuláři používám toggle, který pokud otevřu formulář bez ajaxu běžně na stránce, tak funguje, ale když ho načtu ajaxem, tak je nefunkční. Nejspíše se jedná asi o nějakou zpětnou inicializaci či něco podobného, ale bohužel jsem k tomu zde nenašel nikde řešení a proto o něj prosím. Děkuji.

Jack06
Člen | 168
+
0
-

Přidávám tedy nějaké bližší informace, aby mi byl někdo schopen pomoci.

Zdroj s odkazem na ajaxový požadavek pro vrácení formuláře v modalu: http://pastebin.com/mZ3i42Xf

Formulář načítaný pomoci:

	public function handleCreatePage($menu_id = NULL, $left_index = NULL)
	{
		$this->left_index = $left_index;
		$this->menu_id = $menu_id;
		$tpl = $this->template->setFile(__DIR__ . '/../templates/Homepage/createPage.latte');
		$this->payload->tpl = (string) $tpl;
		$this->sendPayload();
	}
		$form->addRadioList('type', 'Typ stránky', array(
					MenuRepository::TYPE_PAGE => 'Vlastní stránka',
					MenuRepository::TYPE_URL => 'Externí odkaz',
					MenuRepository::TYPE_EXIST_PAGE => 'Existující stránka'
				))
				->setDefaultValue(MenuRepository::TYPE_PAGE)
				->addCondition(Form::EQUAL, MenuRepository::TYPE_URL)
				->toggle('type_url')
				->endCondition()
				->addCondition(Form::EQUAL, MenuRepository::TYPE_EXIST_PAGE)
				->toggle('type_exist_page');

http://pastebin.com/a9iKXq8X

javascript s ajaxovým požadavkem:

$(function() {
	$(document).on('click', '[data-toggle="rmModal"]', function(e) {
		var target = ($(this).data('target') !== undefined) ? $(this).data('target') : '#modal';

		$.nette.ajax({
			url: this.href,
			success: function(payload) {
				$(target).html(payload.tpl).modal('show');
			}
		});

		return false;
	});

	$.nette.init();
});

používám: https://componette.org/search/?…, a netteForms.js

Díky

Editoval Jack06 (16. 12. 2013 12:10)

Jack06
Člen | 168
+
0
-

Tak jsem to snad vyřešil:

$(function() {
	$(document).on('click', '[data-toggle="rmModal"]', function(e) {
		var target = ($(this).data('target') !== undefined) ? $(this).data('target') : '#modal';

		$.ajax({
			url: this.href,
			success: function(payload) {
				$(target).html(payload.tpl).modal('show');

				$(target + ' form').each(function() {
					Nette.initForm(this);
				});

				$.nette.load();
			}
		});

		return false;
	});

	$.nette.init();
});
Jan Suchánek
Člen | 404
+
0
-

@Jack06: Nedá se místo toho return false použít e.preventDefault();?