2013-04-14 3 views
5

У меня есть диалоговое окно jQuery, которое я использую в качестве формы, когда я нажимаю кнопку, она выполняет то, что ей нужно, но не закрывается. Как я могу сделать это, нажав кнопку.Закрытие диалогового окна jQuery при нажатии кнопки

Мой текущий код выглядит следующим образом:

<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> 

кнопка, которая открывает диалоговое окно:

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> 

формы внутри диалогового окна:

<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> 
} 

+2

множественным '.ready' не necessory –

ответ

14

close позволяет делать именно то, что предполагает его название: закрыть диалоговое окно:

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

Кроме того, вы, кажется, вызывать эту функцию внутри события нажатия некоторой #ChangeHeatName. Убедитесь, что вы отменили действие по умолчанию, если это якорь или кнопку отправки, чтобы избежать браузер перенаправления от страницы:

$('#ChangeHeatName').click(function() { 
    $('#HeatNameDiv').dialog('close'); 
    return false; 
}); 
+1

OP уже имеет эту линию в его код –

+1

Да, и эта строка должна работать нормально. Как указано в документации по диалоговому интерфейсу jQuery, вы должны использовать метод '.dialog ('close')', если вы хотите закрыть диалоговое окно. Не стесняйтесь обращаться к документации, если у вас есть некоторые сомнения: http://api.jqueryui.com/dialog/#method-close –

+0

Я думаю, проблема в том, что ChangeHeatName не находится в DOM при привязке к клику мероприятие. Live, вероятно, исправит это. – alexn

1

Поместить весь код в одном $(document).ready() и попробовать этот

$(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 HERE

Поскольку кнопка в внутри диалогового окна, используйте код ниже:

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

DEMO HERE

+0

Спасибо за помощь. Единственная проблема заключается в том, что кнопка, которую я хочу закрыть, находится в диалоговом окне. –

+0

Действительно ли демо работает для вас? –

+0

@Danger_Fox Я обновил код. Попробуйте один раз! –

0

Ниже приведен код для кнопки в диалоговом окне и закрыть диалоговое окно по щелчку

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> 

Open Dialog

Смежные вопросы