Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery多事件响应_Javascript_Jquery_Events - Fatal编程技术网

Javascript jquery多事件响应

Javascript jquery多事件响应,javascript,jquery,events,Javascript,Jquery,Events,我是一名经验丰富的程序员,但在JavaCScript/JQuery方面没有太多经验。我正试图修复别人的代码,所以我有点不舒服。另外,我们正在研究这两种方法的古老版本 我们有一个从链接弹出的对话框。它有一个文本字段和一个OK按钮。您键入电子邮件地址,信息就会发送给您。单击“确定”时,一切正常。在地址后键入enter时,将获得n份副本,n是对话框打开的次数 $(index_init); function index_init() { $("#forward_one_dial

我是一名经验丰富的程序员,但在JavaCScript/JQuery方面没有太多经验。我正试图修复别人的代码,所以我有点不舒服。另外,我们正在研究这两种方法的古老版本

我们有一个从链接弹出的对话框。它有一个文本字段和一个OK按钮。您键入电子邮件地址,信息就会发送给您。单击“确定”时,一切正常。在地址后键入enter时,将获得n份副本,n是对话框打开的次数

  $(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函数添加代码?