Javascript jquery多事件响应
我是一名经验丰富的程序员,但在JavaCScript/JQuery方面没有太多经验。我正试图修复别人的代码,所以我有点不舒服。另外,我们正在研究这两种方法的古老版本 我们有一个从链接弹出的对话框。它有一个文本字段和一个OK按钮。您键入电子邮件地址,信息就会发送给您。单击“确定”时,一切正常。在地址后键入enter时,将获得n份副本,n是对话框打开的次数Javascript jquery多事件响应,javascript,jquery,events,Javascript,Jquery,Events,我是一名经验丰富的程序员,但在JavaCScript/JQuery方面没有太多经验。我正试图修复别人的代码,所以我有点不舒服。另外,我们正在研究这两种方法的古老版本 我们有一个从链接弹出的对话框。它有一个文本字段和一个OK按钮。您键入电子邮件地址,信息就会发送给您。单击“确定”时,一切正常。在地址后键入enter时,将获得n份副本,n是对话框打开的次数 $(index_init); function index_init() { $("#forward_one_dial
$(index_init);
function index_init()
{
$("#forward_one_dialog").dialog(
{
autoOpen: false,
modal: false,
zIndex: 3000,
buttons: { "Ok": forward_one}
});
$(".link_forward").click(function()
{
if ($("#forward_one_dialog").dialog("isOpen") == true)
{
return false;
} else {
$("#forward_one_dialog").dialog("open");
$("#forward_one_dialog").keypress(function(e) {
if(e.keyCode == $.ui.keyCode.ENTER) {
forward_one();
}
});
$("#forward_one_to").focus();
}
});
}
function forward_one()
{
var dialog = "#forward_one_dialog";
var path = $("#forward_one_url").attr('value');
var url = "/emails/list/" + path + "/forward/?fmt=json";
var recipients = $("#forward_one_to").val();
if (!recipients)
{
$(dialog).dialog("close");
// this is in list.js:
error_txt("#no_forward");
return false;
}
var emailid = $("#forward_one_emailid").attr('value');
var data = { "subset" : [emailid], "recipients" : recipients };
$.post(
url,
data,
function(jsonrpc, xhrstatus) {
jsonrpc_status(jsonrpc, xhrstatus, "#forward_one_dialog");
},
"json"
);
$(dialog).dialog("close");
return false;
}
如您所见,单击OK并按enter键时会调用forward_one。只是次数的问题
如果有任何帮助,我尝试在forward_one中重置文本字段的值。在这种情况下,对话框不包含最后一个值。我仍然接到多个电话,但只有一个有新的价值。其余的有重置值
$(".link_forward").click(function()
{
/* ... */
$("#forward_one_dialog").keypress(function(e) {
if(e.keyCode == $.ui.keyCode.ENTER) {
forward_one();
}
});
/* ... */
});
您可以在这里看到,每次单击.link\u forward时,都会调用keypress。这个对keypress的调用向forward\u one\u对话框元素添加了一个处理程序。因此,每次单击它时,都会在现有的处理程序之上添加另一个处理程序。这就是你问题的原因。将此调用移动到click处理程序外部的keypress,以便只应用一次。如果必须在打开对话框后才调用它,则创建一个布尔值来跟踪它是否已被调用,并确保它只被调用一次。是否可以为forward\u one函数添加代码?