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
获得焦点时保存元素,然后打印出textarea
的id
。
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 服务获取图像