JS confirm na tlačítku jen při zaškrtnutém checkboxu

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

Ahoj, mám formulář s checkboxem a chtěl bych zobrazit javascriptový confirm po kliknutí na tlačítko Uložit, ale jen v případě, když bude tento checkbox zaškrtnutý. Zkoušel jsem toto

$form->addCheckbox('dispatcher', 'Předat dispečerovi');

$form->addSubmit('save', 'Uložit')
     ->addConditionOn($form['dispatcher'], NForm::FILLED)
       ->getControlPrototype()
         ->onclick('return confirm("Opravdu si přejete tuto rezervaci předat dispečerovi?")');

ale dostanu jen výjimku MemberAccessException. Metoda addConditionOn() se dá použít jen pro validační pravidla? Neřešili jste už někdo něco podobného? Díky.

Editoval radas (12. 12. 2010 19:26)

bojovyletoun
Člen | 667
+
0
-
$u = $form->addSubmit('save', 'Uložit');
$u->addConditionOn($form['dispatcher'], Form::FILLED);
$u->getControlPrototype()
	->oncl...

voláš getcontrolprototype na Rule…

Editoval bojovyletoun (12. 12. 2010 18:17)

radas
Člen | 221
+
0
-

Ale tvůj kód se bude chovat stejně jako můj, vzhledem k tomu, že tyto metody vracejí referenci na svoji instanci.

Matúš Matula
Člen | 257
+
+1
-

Ahoj,

daj tu podmienku do toho onclicku

<?php
$form->addCheckbox('dispatcher', 'Předat dispečerovi');
$form->addSubmit('save', 'Uložit')
   ->getControlPrototype()
         ->onclick("if ($('#{$form['dispatcher']->getHtmlId()}').is(':checked')) return confirm('Opravdu si přejete tuto rezervaci předat dispečerovi?')");
?>

Neskusal som to, ale ideu mas..

radas
Člen | 221
+
0
-

Perfektní, díky moc za inspiraci. Tvoje řešení sice funguje, ale pak už se nespustí javascriptová validace formuláře. S touto úpravou už pak funguje vše.

$form->addCheckbox('dispatcher', 'Předat dispečerovi');

$form->addSubmit('save', 'Uložit')
     ->getControlPrototype()
       ->onclick("if ($('#".$form['dispatcher']->getHtmlId()."').is(':checked')) return confirm('Opravdu si přejete tuto rezervaci předat dispečerovi?') ? nette.validateForm(this) : false");

Editoval radas (12. 12. 2010 21:51)