我试图以两种方式调用一个函数:任一种方式,当调用该函数时,它都不应允许另一种调用该方法
这里'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();
}
});
});
[有很多可能的方法,一种简单的方法就是通过一条路径来汇集所有内容:
$("textarea").keypress(function (e) {
if (e.which == 13 && !e.shiftKey) {
$(e.currentTarget).trigger('focusout'); // or blur
}
});