我大约有30个输入的所有文本,我有一个按钮,当按下按钮时,我想获取焦点所在的ID。
我该怎么办?

最佳答案

重点很棘手。一旦其他元素(如按钮)被单击,焦点就已经移动了,因此您无法通过查看焦点来查看哪个输入字段上次激活。

您可以将焦点事件的事件处理程序附加到每个输入元素,并跟踪自己上一次获得焦点的事件,然后在按下按钮时使用该变量。

也许如果您描述您要解决的实际问题,我们可以提供更好的解决方案。

您可以在此处看到记住最后一个活动输入字段的示例: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';
    }
});​

10-05 20:37
查看更多