我有大约 30 个输入的所有文本,我有一个按钮,我想在按下按钮时获取焦点的 ID。我怎么能得到那个?
问问题
2189 次
2 回答
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';
}
});
于 2013-01-04T01:19:01.953 回答
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>
于 2013-01-04T01:36:59.370 回答