J’utilise ce dialog:
$("#myDialog").dialog({ hide: {effect: "fade", duration: 3000}, buttons: { Save: function() { $.post(someurl, function() { $("#myDialog").dialog( "close" ); }); }, Cancel: function() { $("#myDialog").dialog( "close" ); } } });
J’ai deux actions proches qui sont sémantiquement différentes:
Le code ci-dessus utilise simplement .dialog("close")
dans les deux cas, les deux cas ayant donc le même effet de fondu.
Quel est le meilleur moyen d’obtenir une clôture instantanée sur le second cas, tout en conservant la décoloration lente dans le premier?
Edit : Je souhaite également que le fait de cliquer sur ESCAPE produise exactement le même effet que le bouton Annuler: fondu instantané.
Le moyen le plus simple de le faire est:
$("#myDialog").dialog({ hide: null, buttons: { Save: function() { $("#myDialog").dialog("option", "hide", "fade").dialog("close"); }, Cancel: function() { $("#myDialog").dialog("close"); } }, close: function(e) { $("#myDialog").dialog("option", "hide", null); } });
Il suffit de définir l’option masquer dans les deux cas:
$("#myDialog").dialog({ buttons: { Save: function() { $("#myDialog").dialog("option", "hide", "fade").dialog("close"); }, Cancel: function() { $("#myDialog").dialog("option", "hide", null).dialog("close"); } }, beforeClose: function(event, ui) { if (event.which === 27) { $("#dialog").dialog("option", "hide", false); } } });
DEMO
Pour votre cas “Close after success”, vous pouvez simplement émettre $ (‘.ui-dialog’ ‘). FadeOut (5000);
Voici comment j’ai utilisé ce qui précède:
$('input').keypress(function () { if ($(this).val() === "") { //works on 1st char you type $('.ui-dialog').fadeOut(5000); } });
En outre, au lieu d’ouvrir simplement, vous aurez besoin de: myDlg.dialog (‘close’). Dialog (‘open’);