Javascript / jQuery 获取我正在输入的文本区域的 id [重复]

Posted

技术标签:

【中文标题】Javascript / jQuery 获取我正在输入的文本区域的 id [重复]【英文标题】:Javascript / jQuery to obtain the id of the textarea that I am typing in [duplicate] 【发布时间】:2013-10-24 07:53:00 【问题描述】:

我有一个简单的表单,其中包含三个文本区域,每个区域都有不同的 id。我希望能够按下按钮并返回我正在输入的文本区域的 ID。相反,当我按下按钮时,我收到按钮的 ID,即 button1:

<!DOCTYPE html>
<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
  </script>
  <script>
    function printTagName() 
      $("#p1").html($(":focus").attr("id"));
    
  </script>
</head>
<body>
  <form>
    <textarea id="textarea1"></textarea>
    <textarea id="textarea2"></textarea>
    <textarea id="textarea3"></textarea>
  </form>
  <p id="p1"></p>
  <button type="button" id="button1" onclick="printTagName()">Press</button>
</body>
</html>

我该如何解决这个问题?

【问题讨论】:

使用 document.activeElement ***.com/questions/497094/… 【参考方案1】:

当点击按钮时焦点转移到按钮上。当textarea 获得焦点时保存元素,然后打印出textareaid

var focusElement = ;

$("textarea").focus(function()
   focusElement = this;
);

$("#button1").click(function(e)
    e.preventDefault();
    $("#p1").html(focusElement.id);
);

JS 小提琴: http://jsfiddle.net/ZYK7f/

【讨论】:

如果你使用 .attr 或使用 focusElement.id 为什么不使用 $(this) 而不是再次将其转换为 jQuery 对象? 嗨凯文,非常感谢您的解决方案。当我将您的 javascript 代码放入 $(document).ready(function() ... );再次感谢,一切顺利。 那么我不应该编辑我的帖子,它现在再次存储 ID 而不是对象。【参考方案2】:

这会起作用,除非你需要知道有焦点的东西是否不再有它。

例如,如果用户在点击按钮之前点击了不是文本区域的内容,并且您需要知道这一点,那么代码将变得非常复杂

var hadFocus;
$(function() 
  $("textarea").on("focus",function()  hadFocus=this.id; );
);
function printTagName() 
  $("#p1").html(hadFocus || "No textarea had focus");

【讨论】:

不发表评论的反对者应该被禁止!【参考方案3】:

非常感谢 Kevin Bowersox 和其他所有人回答我的问题。这是 Kevin 解决方案的完整代码(我在他的解决方案中添加了 $(document).ready(function() ...);):

<!DOCTYPE html>
<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
  </script>
  <script>
    $(document).ready(function()
      var focusElement = ;

      $("textarea").focus(function()
        focusElement = this;
      );

      $("#button1").click(function(e)
        e.preventDefault();
        $("#p1").html($(focusElement).attr("id"));
      );
    );
  </script>
</head>
<body>
  <form>
    <textarea id="textarea1"></textarea>
    <textarea id="textarea2"></textarea>
    <textarea id="textarea3"></textarea>
  </form>
  <p id="p1"></p>
  <button type="button" id="button1">Press</button>
</body>
</html>

【讨论】:

【参考方案4】:

保存最后一个焦点的TextArea使用:

var lastFocus;
$("TextArea").focus(function () 
   lastFocus = this;
);

这会调用 printTagName 函数

function printTagName() 
   $("p").html(lastFocus.id);
);

【讨论】:

如果你使用 attr 你需要使用 $(this) 如果没有,使用 lastFocus.id。无论如何已经回答了两次 @mplungjan:已更正,谢谢!

以上是关于Javascript / jQuery 获取我正在输入的文本区域的 id [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery/Javascript 根据按钮单击获取表行值

在 javascript / jquery 中获取当前视频帧

尝试使用 chrome 控制台 javascript/jquery 获取内部元素

在 Javascript/JQuery 中从 REST Web 服务获取图像

使用 jQuery 或 Javascript 获取括号内的字符串

如何使用 javascript/jquery 从 URL 中删除获取变量和文件名?