在特定情况下无法调用Jquery / javascript停止功能(当其他事件已调用该功能时)

问题描述 投票:0回答:1

我试图以两种方式调用一个函数:任一种方式,当调用该函数时,它都不应允许另一种调用该方法

这里'renameFolder'在2个地方被调用:首先在焦点对准上,其次在按下Enter时。

问题是,当按下Enter键时,它会调用函数2次,即1按下Enter键,第二次聚焦。

$('#rename').click(function() {

  //delete previous popup-menu if exists
  removeMenu();

  var folder = e.target.id;
  var folderId = $("#" + folder).attr("id");
  var folderName = $('#' + folder).parent().parent().children('.bd-title').text().trim();

  $('#' + folder).parent().parent().children('.bd-title').replaceWith('<textarea class="bd-folder-title-input" oninput="this.style.height = `1px`;this.style.height = (10+this.scrollHeight)+`px`;"  onfocusout="renameFolder()" maxlength="50" cols="10">' + folderName + '</textarea>');
  $('textarea').focus();
  $('textarea').select();
  $("textarea").keypress(function(e) {
    if (e.which == 13 && !e.shiftKey) {
      renameFolder();
    }
  });

});
javascript jquery events javascript-events event-handling
1个回答
0
投票

[有很多可能的方法,一种简单的方法就是通过一条路径来汇集所有内容:

$("textarea").keypress(function (e) {
  if (e.which == 13 && !e.shiftKey) {
    $(e.currentTarget).trigger('focusout'); // or blur
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.