Jquery 停止在特定场景中调用函数(当它已经被其他事件调用时)



我正在尝试以两种方式调用函数:无论哪种方式,当调用函数时,它都不应该允许另一个调用该方法

这里调用renameFolder在 2 个地方:第一个在焦点外,第二个在按下回车键时。

问题是,当按下 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();
}
});
});

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

$("textarea").keypress(function (e) {
if (e.which == 13 && !e.shiftKey) {
$(e.currentTarget).trigger('focusout'); // or blur
}
});

最新更新