web-dev-qa-db-fra.com

Fermeture de la boîte de dialogue jQuery lors d’un clic sur un bouton

J'ai une boîte de dialogue jQuery que j'utilise comme formulaire; lorsque je clique sur le bouton, elle effectue ce qu'elle doit, mais ne se ferme pas. Comment ferais-je pour le faire fermer en cliquant sur un bouton.

Mon code actuel ressemble à ceci:

<script type="text/javascript" charset="utf-8">
$(document).ready(function () {
    $('#HeatNameDiv').dialog({
        autoOpen: false
    });
});
$(document).ready(function () {
    $('#Change_Heat_Name').click(function (e) {
        e.preventDefault();
        $('#HeatNameDiv').dialog('open');
    });
});
</script>

Bouton qui ouvre la boîte de dialogue:

Heat Name<input type="text" name="heat_name" value="@Html.ValueFor(x => x.heatname)" class="search-query" placeholder="Search" style ="width:100px"/>
        <button class="btn btn-success" id="Change_Heat_Name" value="Change_Heat_Name" name="action:Change_Heat_Name" type="button"> Change Heat Name</button>

Formulaire à l'intérieur de la boîte de dialogue:

<div id="HeatNameDiv" title="Change Heat Name">
@using (Ajax.BeginForm("ChangeHeatName", "Home", FormMethod.Post, new AjaxOptions(){UpdateTargetId = "chemDiv", InsertionMode = InsertionMode.Replace, OnSuccess = "$(document).ready(function () { $('#ChangeHeatName').click(function () { $('#HeatNameDiv').dialog('close');});});" }))
{
    <section>
        Heat Name:<input type="text" name="heatName" value="@Html.ValueFor(x => x.heatname)" style ="width:100px"/>
        Change to:<input type="text" name="updatedHeat" value="" style="width: 100px" />
        <input type="submit" name="ChangeHeatName" value="Change" />
    </section>
}

6
Danger_Fox

La close vous permet de faire exactement ce que son nom suggère: fermez la boîte de dialogue:

$('#HeatNameDiv').dialog('close');

De plus, vous semblez appeler cette fonction dans l'événement click de #ChangeHeatName. Assurez-vous que vous avez annulé l'action par défaut s'il s'agit d'une ancre ou d'un bouton d'envoi pour éviter que le navigateur ne se redirige hors de la page:

$('#ChangeHeatName').click(function () {
    $('#HeatNameDiv').dialog('close');
    return false;
});
18
Darin Dimitrov

Mettez tout votre code dans une $(document).ready() et essayez ceci

$(document).ready(function () {
    $('#HeatNameDiv').dialog({
        autoOpen: false
    });

    $('#Change_Heat_Name').click(function (e) {
        e.preventDefault();

        // This will open the dialog
        $('#HeatNameDiv').dialog('open');
    });

    $('#ChangeHeatName').click(function (e) {
        e.preventDefault();

        // This will close the dialog
        $('#HeatNameDiv').dialog('close');
    });
});

DEMO ICI

Depuis le bouton dans la boîte de dialogue, utilisez le code ci-dessous:

$('#ChangeHeatName').click(function (e) {
    e.preventDefault();
    $('.ui-icon-closethick').click();
});

DEMO ICI

1
palaѕн

Ci-dessous, le code du bouton dans la boîte de dialogue et fermez la boîte de dialogue en cliquant. 

  jQuery(document).ready(function ($) {
                $("#dialog").dialog({
                    autoOpen: false, 
                    show: {
                        effect: "blind",
                        duration: 1000
                    },

                hide: {
                    effect: "explode",
                    duration: 1000
                }
            });

            $("#opener").click(function () {
                $("#dialog").dialog("open");
            });
            $("#Closer").click(function () {
                $("#dialog").dialog("close");
            });
        });

 <div id="dialog" title="Basic dialog">
  <p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
   <button id="Closer">Close Dialog</button>
</div>

Ouvrir le dialogue

0
Mian Numan