Стоп Введите распространение события ключа из диалогового окна 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);
}
}