2013-10-16 32 views
2

我有一個簡單的3個textareas,每個都有一個不同的id。我希望能夠按按鈕,返回textarea的id其中我打字的而不是當我按下按鈕,我收到的按鈕,這是Button1的ID:javascript/jquery獲得我正在鍵入的textarea的ID

<!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> 

如何解決這個問題? 謝謝。

+0

使用document.activeElement的http://計算器。 com/questions/497094/how-do-i-find-out-which-dom-element-have-the-focus – Ahmad

回答

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/

+0

如果使用.attr或使用focusElement.id,而不是將其重新投射到jQuery對象,爲什麼不使用$(this)? – mplungjan

+0

嗨凱文,非常感謝您的解決方案。當我將你的javascript代碼放入一個 $(document).ready(function(){ ... })時,它就起作用了。 再次感謝,並一切順利。 – user2725109

+0

然後,我不應該編輯我的帖子,現在再次存儲ID而不是對象。 – mplungjan

1

這將工作,除非你需要知道是否有焦點不再有它。

例如,如果用戶點擊的東西是不打按鈕前一個文本,你需要知道這一點,代碼將變得相當複雜

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

不應評論的下流者應該被禁止! – mplungjan

0

保存有使用最後焦點的文本區域:

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

而這個調用printTagName功能

function printTagName() { 
    $("p").html(lastFocus.id); 
}); 
+0

如果您使用attr,則需要使用$(this),否則使用lastFocus.id。無論如何已經回答了兩次 – mplungjan

+0

@mplungjan:更正了,謝謝! –

0

非常感謝你凱文Bowersox和其他人回答我的問題。下面是凱文的解決方案的完整代碼(我添加了一個$(文件)。就緒(函數(){...});他的解決方案):

<!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>