假设我有 2 个输入元素和 1 个按钮。我希望按钮一次为一个输入元素执行一个功能,根据当前正在聚焦的输入元素,但我不知道如何捕获每个元素的聚焦状态。
请考虑此示例:
<head>
<script type="text/javascript">
var id_box = document.createElement('input');
id_box.id = 'id_box';
id_box.type = 'text';
div.appendChild(id_box);
var weight_box = document.createElement('input');
weight_box.id = 'weight_box';
weight_box.type = 'text';
div.appendChild(weight_box);
function showLetter() {
if (id_box is being focused){
document.getElementById('id_box').value = 'ABC';
}
if (weight_box is being focused){
document.getElementById('weight_box').value = 'ABC';
}
}
</script>
</head>
<body>
<button onclick="showLetter()">ABC</button>
</body>
知道吗?谢谢。
单击该按钮的那一刻,文本字段无论如何都会失去焦点。 尝试为每个文本框捕获 OnFocus 方法,并为文本字段的实例设置一个变量。 这样你就有了最新的文本字段,你不需要你的if语句。
如果输入具有焦点,并且用户随后单击按钮,则输入将立即失去焦点,因此您无法检测到哪个输入具有所需的焦点。
您可以通过将事件处理程序附加到onFocus
事件的每个输入来创建存储"当前"输入的变量。
jsFiddle上的演示:http://jsfiddle.net/P58sx/1/
var current_input;
function showLetter() {
current_input.value = 'ABC';
}
function setCurrentInput() {
console.log(this);
current_input = this;
}
var id_box = document.createElement('input');
id_box.id = 'id_box';
id_box.type = 'text';
id_box.addEventListener("focus", setCurrentInput);
div.appendChild(id_box);
var weight_box = document.createElement('input');
weight_box.id = 'weight_box';
weight_box.type = 'text';
weight_box.addEventListener("focus", setCurrentInput);
div.appendChild(weight_box);
我建议尝试onFocus
事件处理程序。
一个技巧是声明一个变量并在每个字段的事件中onFocus
设置它。然后在按钮代码中,您可以检查在单击按钮之前聚焦的最后一个字段是什么。