Diskuze: nette.ajax.js odeslání formuláře
Tvůrce
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Zdravím, to by mělo normálně fungovat, pokud jsi tu knihovnu dobře inicializoval. Bez kódu Ti k tomu asi víc nepovím.
Ahoj,
Voláš někde $.nette.init();
?
btw. jen tak naokraj, snippety fungují i s ručně zavolaným AJAXem (musí bý
ale volany přes $.nette.ajax({})
)
Ano, vše kromě formulářů funguje korektně- třeba ajaxové odkazy
fungují normálně.
formulář:
public function createComponentItemsPerPage()
{
$form = new Base();
$form->ajax = true; // přidá class="ajax"
$form->addSelect('items', 'Položek na stránku: ', $this->itemsPerPage)
->setDefaultValue(20);
$form->addSubmit('set', 'OK');
$form->onSuccess[] = [$this, 'onItemsPerPageChange'];
return $form;
}
JS:
$.nette.init();
$.nette.ext('spinner', {
start: function (xhr, settings) {
// show spinners for .show-spinner links
$el = $(settings.nette.ui);
if ($el.is('.show-spinner')) {
spinner.show();
}
},
complete: spinner.hide,
});
Ještě vygenerované HTML:
<form action="/contacts/detail/1" method="post" class="form-normal ajax" id="frm-activityList-itemsPerPage">
<div class="form-group">
<label for="frm-activityList-itemsPerPage-items">Položek na stránku: </label>
<select name="items" id="frm-activityList-itemsPerPage-items" class="form-control">
<option value="10">10</option>
<option value="20">20</option>
<option value="50" selected="">50</option>
<option value="100">100</option>
</select>
</div>
<input type="submit" name="set" value="OK" class="btn btn-primary">
<input type="hidden" name="_do" value="activityList-itemsPerPage-submit">
<!--[if IE]><input type=IEbug disabled style="display:none"><![endif]-->
</form>
onItemsPerPageChange() volá jen $this->redrawControl();
Kam mám prosimtě napsat Nette={}; abych nemusel použít netteForms?
Myslím, že to patří buď na konec nette.ajax.js nebo na začátek tvého skriptu. Už jsem to zapomněl. Dokonce mají na githubu ode mě pull request, ale tím se nikdo už asi čtvrtý měsíc nezabývá
Téma už je starší, nicméně jsem teď řešil to samé v Nette 3.
Přidání následujícího kódu před $.nette.init(); pomohlo
Nette = {
initForm: function () {}
};
Zobrazeno 13 zpráv z 13.