2013-01-04 44 views
1

我有大約30個輸入全部文本,我有一個按鈕,當按鈕按下時,我想要獲得聚焦的那個ID。 我怎樣才能得到它?使用javascript獲取活動字段ID

+1

定義「活性'。如果你的意思是聚焦,那麼點擊該按鈕後,焦點就會轉到按鈕上,這樣就不容易實現。另外,你應該展示你有什麼,不要問怎麼做。 – kennypu

回答

4

重點是棘手的。只要其他元素(如單擊按鈕),我的焦點已經移動,因此您無法通過查看焦點來查看上一次激活的輸入字段。

您可以將焦點事件的事件處理程序附加到每個輸入元素,並跟蹤自己最後一個接收焦點的人,然後在按下按鈕時使用該變量。

也許如果你描述你試圖解決的實際問題,我們可以提供更好的解決方案。

您可以在這裏看到一個記住最後一個活動輸入字段的示例:http://jsfiddle.net/jfriend00/XmqPe/。單擊該按鈕,最後一個活動字段將以紅色突出顯示。

var lastInput; 
function gotInput() { 
    lastInput = this; 
} 

function addEvent(elem, event, fn) { 
    if (elem.addEventListener) { 
     elem.addEventListener(event, fn); 
    } else { 
     elem.attachEvent("on" + event, function() { 
      fn.call(elem, window.event); 
     }); 
    } 
} 


var inputs = document.getElementsByTagName("input"); 
for (var i = 0; i < inputs.length; i++) { 
    addEvent(inputs[i], 'focus', gotInput); 
} 

addEvent(document.getElementById('test'), 'click', function() { 
    for (var i = 0; i < inputs.length; i++) { 
     inputs[i].style.borderColor = '#000'; 
    } 
    if (lastInput) { 
     lastInput.style.borderColor = '#F00'; 
    } 
});​ 
0

你可以試試這個解決方法,以獲得具有焦點的最後一個輸入的按鈕按下:

示例使用jQuery:

<script type="text/javascript"> 
    $(document).ready(function() { 

     var lastId = null; 


     $(".inputTest").focus(function() { 
      //put the last input id in a "global" variable: 
      lastId = $(this).attr("id"); 
     }); 

     $("#btnTest").click(function() { 

      if (lastId) { 
       //if exists, do something: 
       alert(lastId); 
      } 
     }); 
    }); 
</script> 

HTML示例:

<body> 
    <input type="text" name="test1" id="test1" class="inputTest" /> 
    <input type="text" name="test2" id="test2" class="inputTest"/> 
    <input type="text" name="test3" id="test3" class="inputTest" /> 
    <input type="text" name="test4" id="test4" class="inputTest" /> 
    <input type="text" name="test5" id="test5" class="inputTest" /> 
    <input type="text" name="test6" id="test6" class="inputTest" /> 

    <input type="button" value="test" id="btnTest" /> 

</body> 
+0

除了OP沒有在他們的問題的任何地方指定jQuery。約定通常不會提出jQuery解決方案,除非在問題中通過標記或文本中提到了jQuery。另外,這與我提出的簡單的JavaScript回答有何不同? – jfriend00