У меня есть диалог входа в систему, который может создать диалоговое окно с предупреждением, когда пользователь не заполняет все поля. Затем нажатие клавиши escape удаляет диалоговое окно входа, а не предупреждение.
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;
}
});