Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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/70.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 从当前关注的文本区域记录值_Javascript_Jquery - Fatal编程技术网

Javascript 从当前关注的文本区域记录值

Javascript 从当前关注的文本区域记录值,javascript,jquery,Javascript,Jquery,假设我的页面上有许多textarea元素,我的目标是记录我正在键入的当前textarea元素的值 我已经成功地编写了这样做的代码,但问题是,当在一个textarea中键入文本,然后切换到另一个并键入一段时间后,当我返回到第一个时,我会在该元素上附加两个.keyup()方法。所以我得到了两个textarea值的日志 $( "body" ).click( function( event ) { let element = event.target if( element.nodeName =

假设我的页面上有许多
textarea
元素,我的目标是记录我正在键入的当前
textarea
元素的值

我已经成功地编写了这样做的代码,但问题是,当在一个
textarea
中键入文本,然后切换到另一个并键入一段时间后,当我返回到第一个时,我会在该元素上附加两个
.keyup()
方法。所以我得到了两个
textarea
值的日志

$( "body" ).click( function( event ) {
  let element = event.target
  if( element.nodeName === "TEXTAREA" ){
    if($(element).focus()){
      $(element).keyup(function(){      
        console.log(element.value)   
      })
    }else {
      $(element).unbind( 'keyup' )
    }  
  }
});

要删除该方法堆栈,我需要做什么?

您不应该将事件附加到另一个事件中,因为当第一次触发时,内部的事件将附加到另一个时间,依此类推

我建议将
input
事件直接附加到
textarea
,而不是
keyup
和嵌套事件,因此借助
this
关键字,您将获得当前更改的
textarea
元素,如:

$(“textarea”)。在('input',函数(event)上{
log($(this.val());
});




我看到了两种解决方案。如果元素失去焦点,可以解除事件侦听器的绑定(此处需要侦听的应该是
blur
事件)。但最好重写代码,使所有keyup事件侦听器都附加到页面加载上的文本区域(而不是像这里一样响应焦点)
你不应该将事件附加到另一个事件中
正在我脑海中响起。感谢您优雅的解决方案和精彩的解释