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
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
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');
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
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();
});