Стоп Введите распространение события ключа из диалогового окна jQuery

Предисловие: я опытный программист, но новичок с точки зрения html, javascript и jQuery. Тем не менее, я действительно влюбился в JQuery. Это так же близко к поэзии, как и все, с чем я когда-либо сталкивался в своих 25-летних программах.

Во всяком случае, вот моя проблема:

У меня есть страница, где я реализую модальное диалоговое окно jQuery, которое служит подсказкой "Подтвердить" для отправки формы. Это может происходить как при нажатии пользователем кнопки, так и при нажатии кнопки ENTER. В любом случае, он правильно отображает диалоговое окно подтверждения с акцентом на кнопку "Обновить". И пока я нажимаю кнопки мышкой, все работает нормально. Но когда я нажимаю ENTER (чтобы активировать событие "щелчка" на кнопке в фокусе), событие клавиши ENTER в конечном итоге распространяется до формы, которая затем снова отображает приглашение "Подтвердить". Я понимаю, что мне нужно остановить распространение события ввода клавиши после закрытия диалогового окна, но я не могу понять, как это сделать. Кто-нибудь может просветить меня?

Спасибо...

отредактировано, чтобы добавить: я попытался добавить "вернуть ложь"; сразу после вызова закрыть диалог в моем обработчике событий, но это не решает проблему:

/*================================== 
 * Confirm Update Dialog Definition
 *==================================*/
    $('#confirmUpdate').dialog({
        autoOpen: false,
        title: "Confirm Update",
        closeText: "Cancel update request.",
        modal: true,
        resizable: false,
        width: 500,
        buttons: 
            [{
        text: "Cancel",
            click: function() {
                $(this).dialog("close");
                return false;
                } 
            }, 
            { 
            text: "Update",
            click: function() {
                submitRequest('SUBMIT');
                $(this).dialog("close");
                return false;
                }
            }], // End buttons
        open: function() { // Set focus on "Update" button
         $(this).siblings('.ui-dialog-buttonpane').find('button:eq(1)').focus(); 
        } 
    }); 

Вот функция, которая отображает диалог:

/*=================================
 * confirmUpdate -- Confirm Update
 *=================================*/
function confirmUpdate() {
    var sName = document.getElementById('sName').value;
    document.getElementById('confirmUpdateText').innerHTML = 'Submit changes to course requests for: <b>' + sName + '</b>?';
    $("#confirmUpdate").dialog("open");
} 

Что еще странно, так это то, что я прекращаю распространение события нажатия клавиши ENTER в функции javascript, которая в первую очередь вызывает диалог:

/*========================================
 * pressedKey -- Process Valid Key Events
 *========================================*/
function pressedKey(keyEvent) {

 // Set key value
    keyEvent = keyEvent || window.event;
    var key = keyEvent.keyCode || keyEvent.which;

 // If anything but ENTER ==> return
    if (key !== ENTER) {
        return;
        }
    else {
        confirmUpdate();
        return (key !== ENTER);
        }
}

0 ответов

Другие вопросы по тегам