2012-03-30 16 views
0

ユーザーがすべてのフィールドに入力しないと、警告ダイアログを作成するログインダイアログが表示されます。その後、エスケープを押すと、警告ダイアログではなくログインダイアログが削除されます。ログインダイアログで偽、と警告ダイアログ上の真の "closeOnEscape" オプションを設定しJQuery UIダイアログでダイアログが作成され、エスケープヒットして最初のダイアログが終了します

jqueryの - 1.7.2.js
jqueryui-1.8.18.js

// alert popup 
function alertMsg(szMsg) 
{ 
    $('#alertText').html(szMsg); 
    $('#alertPopup').dialog('open'); 
} 

$('#alertPopup').dialog({ 
    autoOpen: false, 
    width: 360, 
    resizable: false, 
    modal: true, 
    show: 'scale', 
    hide: 'scale', 
    buttons: { 
     "OK": function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

// login dialog 
$('#loginDialog').dialog({ 
    open: function() { 
     $('#company').focus(); 
    }, 
    autoOpen: false, 
    width: 360, 
    resizable: false, 
    modal: true, 
    show: 'scale', 
    hide: 'scale', 
    buttons: { 
     "Login": function() { 
      var szCompany = $('#company').val(); 
      var szUser = $('#user').val(); 
      var szPassword = $('#password').val(); 

      if ((/^\s*$/).test(szCompany) || 
          (/^\s*$/).test(szUser) || 
          (/^\s*$/).test(szPassword)) 
      { 
       // this is the alert call that creates the bug 
       alertMsg('You need to fill in Company, User,' + 
           ' and Password'); 
      } 
      else 
      { 
       $(this).dialog("close"); 
       alertMsg(szUser + ' (who works for ' + 
         szCompany + ' and has a secret password of ' + 
         szPassword + ', which is no longer a secret)' + 
         ' check back soon for a real login experience.'); 
      } 
     }, 
     "Cancel": function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

// handle enter key for login dialog 
$('#loginDialog').find('input').keypress(function(e) { 
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { 
     $(this).parent().parent().parent().parent(). 
      find('.ui-dialog-buttonpane').find('button:first').click(); 
     return false; 
    } 
}); 

答えて

0

(それが真実であります

+0

)アラートが閉じられた後にログインダイアログでcloseOnEscapeを再び有効にする方法はありますか? – TomZ

+0

また、最初のエスケープがログインダイアログを削除した後、2番目のエスケープはアラートを削除しません。 – TomZ

+0

アラートダイアログのクローズイベントハンドラでは、ログインダイアログのcloseOnEscapeプロパティをtrueに設定できます。 function(event、ui){$( "#loginDialog")。}ダイアログ( "option"、 "closeOnEscape"、false); } 'コード'。 –

関連する問題