Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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_Jquery Events - Fatal编程技术网

Javascript 当其他事件已经调用jQuery函数时,停止调用该函数

Javascript 当其他事件已经调用jQuery函数时,停止调用该函数,javascript,jquery,jquery-events,Javascript,Jquery,Jquery Events,我尝试用两种方式调用函数:无论哪种方式,当调用函数时,都不应允许另一个调用该方法 这里在两个位置调用了renameFolder:第一个是在焦点向外,第二个是在按下enter键时 问题是,当按下enter键时,它会调用函数2次,按下enter键时调用函数1次,按下focus out键时调用函数2次 以下是我的JSFIDLE示例: 下面是我的代码: $('#rename').click(function () { //delete previous popup-menu if ex

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

这里在两个位置调用了
renameFolder
:第一个是在焦点向外,第二个是在按下enter键时

问题是,当按下enter键时,它会调用函数2次,按下enter键时调用函数1次,按下focus out键时调用函数2次

以下是我的JSFIDLE示例:

下面是我的代码:

$('#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) {
                // alert(e);
                // $('textarea').trigger( "focusout" );
                // console.log(e);
                // e.trigger('focusout');
                // $('#' + folder).parent().parent().children('.bd-folder-title-input').trigger( "focusout" );
                $('body').focus();
                // console.log($(e.currentTarget));
                $('.bd-folder-title-input').trigger('focusout');
            }
        });

    });
$('#重命名')。单击(函数(){
//删除以前的弹出菜单(如果存在)
移除菜单();
var folder=e.target.id;
var folderId=$(“#”+folder).attr(“id”);
var folderName=$('#'+folder).parent().parent().children('.bd title').text().trim();
$('#'+文件夹).parent().parent().children('.bd title').replacetwith(''+folderName+'');
$('textarea').focus();
$('textarea')。选择();
$(“文本区域”)。按键(功能(e){
if(e.which==13&&!e.shiftKey){
//警报(e);
//$('textarea').trigger(“focusout”);
//控制台日志(e);
//e.触发(“聚焦输出”);
//$('#'+文件夹).parent().parent().children('.bd文件夹标题输入').trigger(“focusout”);
$('body').focus();
//log($(e.currentTarget));
$('.bd文件夹标题输入').trigger('focusout');
}
});
});

只需在调用focus后添加focusout listner并选择:

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

  //delete previous popup-menu if exists

  var folder = 1;
  //alert(folder);
  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`;" maxlength="50" cols="10">' + folderName + '</textarea>');
  $('textarea').focus();
  $('textarea').select();
  $('textarea').on('focusout', function(event) {
    renameFolder()
  });
  $("textarea").keypress(function(e) {
    if (e.which == 13 && !e.shiftKey) {
      renameFolder();
    }
  });

});
$('#重命名')。单击(函数(){
//删除以前的弹出菜单(如果存在)
var文件夹=1;
//警报(文件夹);
var folderId=$(“#”+folder).attr(“id”);
var folderName=$('#'+folder).parent().parent().children('.bd title').text().trim();
$('#'+文件夹).parent().parent().children('.bd title').replacetwith(''+folderName+'');
$('textarea').focus();
$('textarea')。选择();
$('textarea')。on('focusout',函数(事件){
重命名文件夹()
});
$(“文本区域”)。按键(功能(e){
if(e.which==13&&!e.shiftKey){
重命名文件夹();
}
});
});

在游乐场中查看:

在调用focus并选择以下选项后,只需添加focusout listner即可:

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

  //delete previous popup-menu if exists

  var folder = 1;
  //alert(folder);
  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`;" maxlength="50" cols="10">' + folderName + '</textarea>');
  $('textarea').focus();
  $('textarea').select();
  $('textarea').on('focusout', function(event) {
    renameFolder()
  });
  $("textarea").keypress(function(e) {
    if (e.which == 13 && !e.shiftKey) {
      renameFolder();
    }
  });

});
$('#重命名')。单击(函数(){
//删除以前的弹出菜单(如果存在)
var文件夹=1;
//警报(文件夹);
var folderId=$(“#”+folder).attr(“id”);
var folderName=$('#'+folder).parent().parent().children('.bd title').text().trim();
$('#'+文件夹).parent().parent().children('.bd title').replacetwith(''+folderName+'');
$('textarea').focus();
$('textarea')。选择();
$('textarea')。on('focusout',函数(事件){
重命名文件夹()
});
$(“文本区域”)。按键(功能(e){
if(e.which==13&&!e.shiftKey){
重命名文件夹();
}
});
});
在操场上看: