Potvrdzovacie okno, pred odoslanim formulara

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

Zdravim,

chcem aby po vyplneni formulara a kliknuti na tlacitko odoslat sa najprv vyhodila hlaska kde mozem potvrdit, alebo odmietnut poslanie. Az po naslednej akceptacii sa data odoslu a spracuju, neviem vsak presne ako nato. Zacal som:

latte:

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
{block #content}
{control sendMessageForm}
<button id="opener">Pošli</button>
<div id="dialog" title="Odoslanie notifikácie">Naozaj chcete odoslať správu?</div>
 <script>
$( "#dialog" ).dialog({ autoOpen: false });
    $( "#dialog" ).dialog({
      resizable: false,
      height:140,
      modal: true,
      buttons: {
        "Áno": function() {
          $( this ).dialog( "open" );
        },
        Nie: function() {
          $( this ).dialog( "close" );
        }
      }
    });
$( "#opener" ).click(function() {
  $( "#dialog" ).dialog( "open" );
});
</script>
{/block}

form:

protected function configure(\Nette\Application\IPresenter $presenter)
	{
		$this->addSelect('type', '', array(1, 2 , 3 , 4 ))
				->setRequired();
		$this->addText('title', 'Nadpis');
		$this->addTextArea('message','Napíš správu');
	}

presenter:
public function createComponentSendMessageForm()

	{
		$form = new SendMessageForm();
//		$form->onSuccess[] = callback($this, 'sendMessage');

		return $form;
	}

Neviete mi poradit, co stym?
Dakujem

Lukeluha
Člen | 130
+
+2
-

Zkus přímo při vytváření formuláře toto:

$form->addSubmit('save', 'Odeslat formulář')->getControlPrototype()->onclick("return confirm('Opravdu odeslat?')");

A nemusíš v šabloně nic řešit :)

Juraj_
Člen | 22
+
0
-

Dakujem, funguje skvelo.

Michal Hlávka
Člen | 190
+
+3
-
$form->getElementPrototype()->onSubmit = 'return Nette.validateForm(this) ? confirm(\'Opravdu odeslat?\') : false';
Juraj_
Člen | 22
+
0
-

Dakujem

Juraj_
Člen | 22
+
0
-

Dalo by sa nejak urobit, vlastny confirm?

Skusal som:

function getConfirmation(){
		var retval = false;
		      $(function() {
					$( "#dialog-confirm" ).dialog({
					  resizable: false,
					  height:140,
					  modal: true,
					  buttons: {
						Yes: function() {
						  $( this ).dialog( "close" );
						  retval = true;
						},
						No: function() {
						  $( this ).dialog( "close" );
						  retval = false;
						}
					  }
					});return retval;
				 });
            return retval;
}
</script>
<div id="dialog-confirm" title="Basic dialog">
  <p>Naozaj chcete poslat spravu?</p>
</div>

vytvaram komponent:

$form = new SendMessageForm();
$form->getElementPrototype()->onSubmit = 'return Nette.validateForm(this) ? getConfirmation() : false';
$form->onSuccess[] = callback($this, 'sendMessage');
return $form;

Problem je v tom ze ked po zvalidovani formu mi vyskoci dialog, data sa zacnu odosielat a teda tato funkcia je bezvyznamna…
Neviete mi poradit ako sa da vytvorit vlastny stylovany confirm?

galab
Backer | 74
+
0
-

Něco na tento styl?

<script>
$("#form-submit").click(function (e) {
    e.preventDefault();
    if (getConfirmation()) {
        $("#form").submit();
    }
});
</script>
Juraj_
Člen | 22
+
0
-

Toto mi nefunguje, skusal som aj confirm dialog ale nefunguje…
Proste potrebujem co najlahsie spravit vlastny confirm, ktory si budem moct nastylovat…

Michal Hlávka
Člen | 190
+
0
-

Musíš zobrazit confirm dialog a stále formuláři předat false. Až teprve v dialogu při kliknutí na button odeslat formulář. Takže funkce getConfirmation() nazáčátku bude vracet false, vykreslí tvůj vlastní confirm dialog s dvouma buttonama a jeden bude odesílat formulář pomocí metody .submit(), kterou jsem tam někde v tvém kódu zahlédnul. :-)