2013-07-10 2 views
2
var error = 1; 
    $(document).on('click', '.ui-icon-closethick', function(event){ 
     if(error == 1){ 
      alert('error'); 
      event.preventDefault(); 
      event.stopPropagation(); 
      return false; 
     } 
    }) 

Как не закрывать Диалог пользовательского интерфейса jQuery? Теперь, если я нажимаю кнопку закрытия (x), у меня появляется предупреждение, но диалог закрывается.Как не закрывать Диалог пользовательского интерфейса jQuery?

LIVE DEMO

+0

Проверить http://stackoverflow.com/questions/887029/how-to-implement-confirmation-dialog-in-jquery-ui-dialog Надеюсь, что это помогает ..:) Благодаря Ab –

+0

http://stackoverflow.com/questions/887029/how-to-implement-confirmation-dialog-in-jquery-ui-dialog Благодаря AB –

ответ

5

Ну вы можете сделать это путем удаления кнопки закрытия.

$("#YOUR_DIALOG_DOM_ID").dialog({ 
    closeOnEscape: false, 
    open: function(event, ui) 
    { 
     $(".ui-dialog-titlebar-close", ui.dialog || ui).hide(); 
    } 
}); 
9

Вы можете добавить опцию beforeClose в ваш диалог и вернуть ложна на него:

$("#dialog").dialog({ 
    beforeClose: function(){ 
    return false; 
    } 
}); 

Демо: http://jsfiddle.net/UfpHz/9/

1

Вы можете обрабатывать событие закрытия также

$(function() { 
     $("#dialog").dialog({ 
      close: function(event,ui){ 
       $(this).dialog('open'); 
      } 
     }); 
    }); 

более документацию можно найти здесь link

Demo

2

Вы должны искать ошибки на beforeClose события и вернуть true или false там.

var error = 1; 

$(function() { 
    $("#dialog").dialog({ 
     beforeClose: function (event, ui) { 
      if (error === 1) { // in javascript you compare with ===, not == 
       alert('error'); 
       return false; // error, dialog will not close 
      } 
      return true; // no error, dialog will close 
     } 
    }); 
}); 

http://jsfiddle.net/RHhwV/

4

Вы можете использовать beforeClose событие, чтобы предотвратить диалог от закрытия.

Как это:

$("#dialog").dialog({ 
    beforeClose: function(){ 
     if(error == 1){ 
      alert('error'); 
      return false; 
     } 
    } 
}); 
0

Если я правильно понимаю, вы хотите, чтобы позволить пользователю нажать на кнопку 'X' на верхний правый диалог, но вы не хотите, чтобы они закрывали окно. Возможно, вы захотите запустить другое событие.

Попробуйте этот пример в собственном коде с собственным dialogClass:

$("#dialogId").dialog({ 
     dialogClass: "dialogId", 
     title:  "someTitle", 
     //modal:  true, 
     //autoOpen: false, 
     //resizable: false, 
     //closeOnEscape: false, 
     height: 500, 
     width:  1000, 
     open : function(event, ui){  
     }, 
     beforeClose: function (event, ui) { 
      if ($(".dialogId .ui-dialog-titlebar-close").is(":focus")) { 
       alert('X clicked but do not close!'); 
       return false; // do not close dialog 
      } 
      return true; // close dialog 
     }, 
     buttons: [ 
      { } 
     ] 
}); 

По сути то, что происходит здесь, были, спрашивают, если кнопка для диалога Х фокусируясь (а.к.а. щелкнул), а затем мы возвращаемся ложным. Вы можете инициировать другое событие здесь, если хотите, например, создать свой собственный «Вы уверены, что хотите отменить?». диалоговое окно вверху.

Cheers! Удачи.

Джеффри

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