2013-01-04 42 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