2011-11-28 7 views
0

У меня модальный диалог. Мне нужно закрыть диалог с другой комбинацией клавиш, чем клавиша Easape. Как мне это сделать.Изменение привязки ключа JQuery для модального диалога

У меня есть следующий код, но это никогда не выполняется. Какие-нибудь подсказки почему?

var agreeDialog = $j('#termsOfAgreementConfirm').dialog({ 
      modal: true, 
      autoOpen:false, 
      resizable:false, 
      width : 1000, 
      height :400, 
      stack:false, 
      title:"Terms of Usage", 
       open: function(event, ui) { $j('.ui-dialog-titlebar-close').hide(); }, 
      buttons: { 

       Disagree: function() { 
        disagree.dialog('open'); 
        disagree.dialog('moveToTop'); 

       }, 
       Agree: function() { 
        $j(this).dialog('close'); 
        $j.cookie("agree","Y"); 
        new Ajax.Request('/test/user/ajaxUpdateAgreementForUser', 
          { 
           onSuccess:function(resp){ 
           }, 
           onError: function(resp) { 
            alert("Error:" + resp.toJSON()); 
            return; 
           }, 
           asynchronous:true, 
           evalScripts:true 
          }); 
        $j(this).dialog('close'); 

       } 
      } 
     }); 
     if (result == "false" && $j.cookie("agree")== null) { 
      agreeDialog.dialog('open') 
      agreeDialog.keyup(function e() { 
       alert(e.keyCode); 
      }); 
     } 
+2

Вы должны принимать ответы на некоторые из ваших предыдущих вопросов: http://meta.stackexchange.com/q/5234/171394 – Blazemonger

ответ

1

Вам нужно будет поймать ключевые события на теле, а затем вызвать событие закрытия. См. Этот пример. Нажатие любой клавиши закроет диалоговое окно. Вы должны сделать это за пределами своей декларации.

http://jsfiddle.net/yu8Sg/

$('body').keyup(function(e) {  
    $('#dialog').dialog('close'); 
}); 
+0

Я попытался это раньше, но я не видел Ожидаемые результаты. Теперь это сработало. – allthenutsandbolts

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