Jak dát uživateli vědět, že se formulář odeslal bez Flash message?
- asinkan
- Člen | 38
Ahoj, mám udělané formuláře přes multiplier. Po stížnostech na reload stránky jsem do toho dal AJAX. Ale ted se mi nezobrazí žádné info a flash message nechci použít, na konci stránky neni vidět. Jakou akci použít, aby uživatel věděl, že se akce provedla? Nechci alert javu, ale jestli jinak nepujde, tak teda alert. (Změna nadpisu tlačítka „uložit“, změna barvy formuláře,… ) Díky moc
protected function createComponentDayForm()
{
return new Multiplier(function ($dayNumber) {
$form = new Form;
$form->addText('datumDne', '');
$form->addSubmit('send', 'Ulož')
->onClick[] = [$this, 'oneDayFormSucceeded'];
$form->getElementPrototype()->class('ajax');
return $form;
}
}
public function oneDayFormSucceeded($button)
{
$values = $button->getForm()->getValues();
$this->recordsRepository->setDayinfo($values["dayId"]);
}
Editoval asinkan (18. 1. 2019 8:06)
- asinkan
- Člen | 38
Super diky.
Udelal jsem to bez ajaxu, tam nevim, jak to propojit:
Css
#infoDiv { /* div top left */
position: fixed;
top: 5%;
left: 5%;
width: 20%;
height:10%;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.4);
background-color:#66ff66;
border-radius: 10px;
font-size:150%;
text-align: center;
vertical-align: middle;
font-family: proxima-nova,sans-serif;
}
Java
$(document).ready(function(){
$.nette.init();
$(".button").click(function(){
showInfoDiv();
});
});
function showInfoDiv() {
$('#infoDiv').fadeIn(500);
$("#infoDiv").fadeOut(3000);
}
latte
<div id="infoDiv" style="display:none" >Uloženo <br> (Saved)</div>
- David Matějka
- Moderator | 6445
nejlepe se napoj pres nette.ajax.js extension, do payloadu si das neco, co chces zobrazit a v success eventu to z toho prectes a zobrazis
- asinkan
- Člen | 38
David Matějka napsal(a):
nejlepe se napoj pres nette.ajax.js extension, do payloadu si das neco, co chces zobrazit a v success eventu to z toho prectes a zobrazis
Super, díky. Konečné řešení (obohacene o regex, nechci aby se to zobrazilo pri neuspechu formulare):
$form = new Nette\Application\UI\Form;
$form->addText('leaving', '')->setHtmlAttribute('placeholder', 'HH:MM')->setAttribute("size", $hourSize)
->setRequired(false)
->addRule(Form::PATTERN,"Neplatný formát. (Invalid format)","([0-1]?[0-9]|2[0-3]):[0-5][0-9]");
$form->getElementPrototype()->class('ajax');
$form->addProtection();
return $form;
#infoDiv { /* div top left */
position: fixed;
top: 5%;
left: 5%;
width: 20%;
height:10%;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.4);
background-color:#66ff66;
border-radius: 10px;
font-size:150%;
text-align: center;
vertical-align: middle;
font-family: proxima-nova,sans-serif;
text-shadow: 2px 2px #e0e0d1;
color:#3d3d29;
}
$(document).ready(function(){
$.nette.init();
$.nette.ext('buttonSelector', {
success: function () {
showInfoDiv("Uloženo (Saved) ");
}});
});
function showInfoDiv($msg) {
$('#infoDiv').html($msg);
$('#infoDiv').fadeIn(500);
$("#infoDiv").fadeOut(2000);
}
Editoval asinkan (22. 1. 2019 19:52)