EasyJsConfirm – jednoduche potvrzovani udalosti
- Felix
- Nette Core | 1196
Zdravim,
resil jsem tuhle jak ochranit uzivatele od nechteneho smazani nebo upraveni nece. Stvoril jsem jednoduche potvrzovani.
Zde javascriptove potvrzovani:
// EasyJsConfirm
$('input, a, .easyconfirm').each(function(index, el){
var obj = $(el).data();
if(obj.confirm){
$(el).click(function(){
if(confirm(obj.confirm)){
return true;
}else{
return false;
}
});
}
});
Vyuziti napriklad v sablone:
<a href="{link delete!,$article->id}" data-confirm="Opravdu smazat tento clanek?">SMAZAT</a>
Nebo ve formulari:
$form->addSubmit('delete','Smazat')->getControlPrototype()->data['confirm'] = "Opravdu chcete smazat tento clanek?";
Jen sem se o to chtel podelit ;-)
Editoval Felix (3. 11. 2011 20:23)
- Felix
- Nette Core | 1196
voda napsal(a):
Nebylo by lepší dát podmínku na data-confirm atribut rovnou do selektoru?
$('[data-confirm]')...
Pak by ses mohl zbavit volání
each
.
myslis
// EasyConfirm
$('[data-confirm]').click(function(){
if(confirm($(this).data().confirm)){
return true;
}else{
return false;
}
});
jo to by asi slo :)
Editoval Felix (3. 11. 2011 20:24)
- Vojtěch Dobeš
- Gold Partner | 1316
Dovolím si jen dodat, že před časem David Grudl doporučoval pro tento
účel používat data-nette-confirm
, protože podobná
funkcionalita by měla být do Nette přímo integrována. Navíc na stránce
addonu je odkázané špatné vlákno ve fóru. Hm… taky jsem někde tady
na fóru četl nápad vytvořit čistě pro budoucí kompatibilitu makro
n:confirm
, které by ten datový atribut zapouzdřovalo. Vůbec
kolem tohohle nápadu tady padlo tolik vylepšení, že je až s podivem, že
nejsou zrovna v tomto addonu implementovány. Aneb dvakrát měř a jednou
řež :)
Nicméně když se to vychytá, podle mě je to jako addon (řešící konkr. problém) fajn.
- zapp
- Člen | 32
Toto nefunguje v případě, že je chci vyvolat data-confirm znovu po invalidaci snippetu. Neukáže se confirm dialog, ale rovnou proběhne ajaxový požadavek. Zkusil jsem to ošetřit kódem viz. níže, ale ten projde i když se nepotvrdí confirm dialog, vlastně to projde ještě před vykreslením dialogu. Někdo nějaký nápad?
$('[data-confirm]').live("click", function(e) {
return confirm($(this).data().confirm);
});