onchange=sbumit(), button pri isSubmittedBy by měl vracet true?

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

pokud mám formulář a v něm select, s js funkcí onchange submit, nette vezme první button jako odeslaný to ano, ale pri testování

<?php
	public function modulesFormSubmitted(AppForm $form) {
		if ($form->isSubmitted()) {
			if ($form['save']->isSubmittedBy()) {

			} elseif ($form['change']->isSubmittedBy()) {

			}


vrací $form['change']->isSubmittedBy() FALSE přesto, že je první, vlastně aplikace se tváří jako, že žádný submit nebyl odeslán, jediná šance je navěsit události onclick na jednotlivé buttony



?>
David Grudl
Nette Core | 8227
+
0
-

Můžeš ověřit, že to v aktuální verzi funguje správně?

mcmatak
Člen | 504
+
0
-

sory, dnešní verze, tento kod

presenter

<?php
final class Admin_TestPresenter extends Admin_BasePresenter {
	public function createComponentForm($name) {
		$form = new AppForm($this, $name);
		$form->addSelect("test", "Vyber", array(1, 2, 3, 4, 5, 6))->getControlPrototype()->onchange("submit();");
		$form->addSubmit('btn1', 'A');
		$form->addSubmit('btn2', 'B');
		$form->onSubmit[] = array($this, 'formSubmitted');
		return $form;
	}
	public function formSubmitted(AppForm $form) {
		$values = $form->getValues();
		Debug::dump($values);
		if ($form['btn1']->isSubmittedBy()) {
			echo "gud";
			die();
		}
	}
	public function renderDefault() {
		$this->template->titleWeb = 'Test formulářů';
		$this->template->titlePage = 'Test';
	}
}
?>

sablona
{control form}

bohužel stále nefunguje

Editoval mcmatak (14. 9. 2009 13:36)

David Grudl
Nette Core | 8227
+
0
-

Aha, už chápu kde je zakopaný pes.

Spíš mě to ale přimělo k úvaze, jestli takto je to skutečně dobře. Jestli je skutečně ideální, aby se to tvářilo že došlo k odeslání prvním tlačítkem…

mcmatak
Člen | 504
+
0
-

no, chová se tak přece např. internet explorer, při stisknutí enteru odesílá prvním tlačítkem, samozřejmě to mám navěšené na onclick, ale třeba v dokumentaci píšeš že ajax a další js funkce jsou zajištěny, protože v případě, že není odesláno žádným tlačítkem považuje se první za odeslané, nechť někdo hodí svoje názory, kdy takového chování by bylo proti něčemu, ale přijde mi logické

ještě jsem se nesetkal se situací, kdy by mi takové chování vadilo za posledních pár let

David Grudl
Nette Core | 8227
+
0
-

Mělo by to fungovat.