Texyla – submit nič nerobí

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

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

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)

regiss
Člen | 61
+
0
-

Zakazal bych submit button v textyle a splehal bych se na nativni z formulare

Lkopo
Člen | 65
+
0
-

Preco ale? Tusim aj toto forum vyuziva Texylu a buttony funguju.

Nerad uzatvaram veci metodou, ze nech toto nepouzivam. Zvlast ked sa s Nette ucim pracovat a iste veci su mi neznamou.

regiss
Člen | 61
+
0
-
Tak po tejto zmene mi už zasa nefunguje kontrola vstupov z nette JS scriptu (formulár sa zvaliduje server-side)

Netusim kde muze byt chyba

Lkopo
Člen | 65
+
0
-

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

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)

regiss
Člen | 61
+
0
-

Super, updatovat jsem texyla-sandbox na githubu a nastavil jsem composer na fixni verze v zavislosti.