JQuery UI, диалоговое окно создает диалог, удаляет нажатие и первый диалог завершается - PullRequest
0 голосов
/ 31 марта 2012

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

1 Ответ

0 голосов
/ 31 марта 2012

Установите для параметра «closeOnEscape» значение false в диалоговом окне входа в систему и значение true в диалоговом окне предупреждения (по умолчанию это значение true)

...