2010-08-23 8 views
0

Я пытаюсь закрыть открытый диалог в конце вызова функции, а также использовать текущий элемент кнопки, чтобы закрыть диалоговое окно. Вот код, который открывает диалог. Он динамически называется атрибутом 'rel' для '.modal_btn'. Он открывается так же, как ожидалось:jQuery UI закрыть динамический диалог ... или просто открыть диалог

modalDialog = function(dialogId){ 
     $(dialogId).dialog({ 
      modal: true, 
      draggable: false, 
      resizable: false, 
      width: 'auto', 
      open: function() { $(".ui-dialog-titlebar-close").hide(); } 
     }); 
    } 

    $('.modal_btn').live('click', function(){ 
     var dialogId = $(this).attr('rel'); 
     modalDialog(dialogId); 
    }); 

Теперь после того, как диалоговое окно открыто, я хотел бы использовать свои текущие элементы HTML для кнопок: кнопку Отмена и Сохранить. Кнопка сохранения выполняет вызов ajax, и после завершения вызова ajax я хотел бы закрыть диалоговое окно. Кроме того, я хотел бы иметь возможность закрыть открытый диалог, просто нажав кнопку «Отмена». Я просто не могу понять эту простую функциональность ... любые идеи?

ответ

2

$(dialogId).dialog('close');?

Редактировать в ответ на комментарий:

Ну, как об этом потом. В своей функции modalDialog примените класс к самому диалогу: $(dialogId).addClass('currently-open-dialog').

Тогда ваша близкая функция щелчка может сделать $('.currently-open-dialog').removeClass('currently-open-dialog').dialog('close');

+0

да это были моей первой мысль, однако dialogId не определяется щелкать диалоговую кнопку закрытия ... позволяет сказать, что класс «.close_dialog_btn» ... спасибо за быстрый ответ! – PropSoft

+0

Отредактировано с возможным решением. – Stuart

+0

блестящий! любите творчество Стюарта. Спасибо! – PropSoft

1

несколько способов, чтобы поместить текст на кнопке: стандартная отмена и буквальные. Такой же метод основного действия, однако:

'Yes, Save and Exit': function() 
      { 
       callMyAjaxFuction(); 
       $(this).dialog('close'); 
          }, 
      Cancel: function() 
      { 
       $(this).dialog('close'); 
      }