2

我有一个简单的表单,其中包含三个文本区域,每个区域都有不同的 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>

我该如何解决这个问题?

4

4 回答 4

1

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

var focusElement = {};

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

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

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

于 2013-10-16T09:16:17.117 回答
1

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

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

var hadFocus;
$(function() {
  $("textarea").on("focus",function() { hadFocus=this.id; });
});
function printTagName() {
  $("#p1").html(hadFocus || "No textarea had focus");
}
于 2013-10-16T09:14:32.633 回答
0

非常感谢 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>
于 2013-10-16T12:10:30.017 回答
0

最后使用以下方法保存具有焦点的 TextArea:

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

这调用了 printTagName 函数

function printTagName() {
   $("p").html(lastFocus.id);
});
于 2013-10-16T09:27:16.467 回答