Texyla – submit nič nerobí
- Lkopo
- Člen | 65
Zdravím,
tak po rozbehnutí Texy som si si dal challenge na texylu, ktorú som vyhrabal odtiaľto (https://github.com/…a-Nette-2.1/) (taktiež som sťiahol webloader a prepísal súbory tak, aby sedeli s tým, čo je na gite aby vôbec to fungovalo) a po dlhom hardcodingu sa mi podarilo všetko jasne sprovozniť AŽ na tlačítko Odoslať, ktoré vôbec nefunguje (po kliknutí naň sa nič nestane). Babrem sa už s tým asi 2 hodiny, ale nejak neviem prísť na um, kde môže byť chyba. Prezrel som JS, ale nič zlé tam nevidím.
No môžem sem priložiť komponent na formulár:
protected function createComponentPostForm()
{
$form = new Nette\Application\UI\Form;
$form->addText('title', 'Titulek:')
->setRequired();
$form->addTextArea('content', 'Obsah:')
->setRequired()
->setAttribute('cols', 80)
->setAttribute('rows', 20)
->getControlPrototype()->class("texyla");
$form->addSubmit('send', 'Uložit a publikovat');
$form->onSuccess[] = $this->postFormSucceeded;
return $form;
}
Formulár sa odošle, len keď kliknem na normálne tlačítko (Uložit a publikovat). Skúšal som ho dať aj preč, poprípade premenovať, ale žiadna zmena.
Vopred vďaka za rady.
PS: vo vývojovej konzole nehlási žiadne chyby, takže sa nemám ani čoho chytiť.
Editoval Lkopo (16. 9. 2014 16:48)
- Lkopo
- Člen | 65
Tak, čo som skúšal opatrne prechádzať JS súbory, chyba nastáva tu (js/texyla.js):
Texyla.prototype.submit = function () {
var f = this.textarea.get(0).form;
function submitnout() {
if (f.submit.tagName == undefined) {
f.submit();
} else {
f.submit.click();
}
}
if (typeof f.onsubmit == 'function') {
if (f.onsubmit()) {
submitnout();
}
} else {
submitnout();
}
};
Presnejšie táto časť:
if (typeof f.onsubmit == 'function') {
if (f.onsubmit()) {
submitnout();
}
}
Tej druhej podmienke nejak vôbec nerozumiem, ale keď ju zruším a nechám
tam len vyvolávanie funkcie submitnout()
, formulár sa už
odosiela korektne. Ide o chybu editora?
UPDATE
Tak po tejto zmene mi už zasa nefunguje kontrola vstupov z nette JS scriptu (formulár sa zvaliduje server-side)
Už ma to troška začína znervózňovať čo s tým, ďakujem za každú pomoc.
Editoval Lkopo (16. 9. 2014 19:34)
- Lkopo
- Člen | 65
Práve, rád by som vyriešil tento problém. A odísť od problému nie je pre mňa dobré riešenie, len to oddiali a kedykoľvek sa to môže vrátiť späť, keď to budem vyžadovať.
Možno, že som tento topic zaradil do nesprávnej sekcie, kde sa na to ešte nepozreli tí, čo by mohli vedieť odhadnúť problém?
Editoval Lkopo (17. 9. 2014 12:31)
- Lkopo
- Člen | 65
Tak asi podarilo sa mi finálne vyriešiť problém:
if (typeof f.onsubmit == 'function') {
if (f.onsubmit()) {
submitnout();
}
}
Keď bol formulár vyplnený správne (žiadna chyba vo validácii), tak
f.onSubmit()
nevrátilo true
, ale
undefined
, čiže táto vec spôsobovala to, že sa formulár
neodoslal. Teda, stačí túto podmienku zmeniť na:
if (f.onsubmit() !== false) {
submitnout();
}
a malo by všetko šľapať.
Editoval Lkopo (18. 9. 2014 0:14)