前言:我是一名经验丰富的程序员,但在html,javascript和jQuery方面都是新手。那就是说,我真的爱上了jQuery。它与我在25年多的编程中遇到过的任何东西一样接近诗歌。
无论如何,这是我的问题:
我有一个页面,我正在实现一个jQuery模式对话框,作为提交表单的“确认”提示。用户单击按钮或只需按ENTER即可发生这种情况。在任何一种情况下,它都会正确显示确认对话框,并将焦点放在“更新”按钮上。只要我用鼠标点击按钮,一切正常。但是当我按下ENTER键(为了激活对焦按钮上的“click”事件)时,ENTER键事件最终会传播到表单,然后再次重新显示“Confirm”提示。我知道在对话框关闭后我需要停止传播Enter键事件,但我似乎无法弄清楚如何去做。谁能开导我?
谢谢...
编辑添加:我试过添加“return false;”在调用之后立即关闭我的事件处理程序中的对话框,但这并没有解决问题:
/*==================================
* 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");
}
另外奇怪的是,我在第一个调用对话框的javascript函数中停止传播ENTER键事件:
/*========================================
* 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);
}
}