JavaScript捕获onfocus事件

时间:2018-03-23 20:40:49

标签: javascript try-catch onclicklistener onfocusout

我有一些输入和一个按钮。我想实现允许删除最近聚焦/聚焦输出之一的功能。

我设置了onfocusout函数,它在按钮上设置了一个点击监听器。如果我专注于第一个输入然后从中聚焦并单击按钮 - 工作正常。但是,当我专注于第一个输入,然后在第二个并点击按钮 - 我得到deleteCell()函数执行n次我集中注意力。

如何让它只记住最后一次onfocusout事件?它似乎在点击按钮之前计算我的onfocusout事件。

谢谢。

var input = document.createElement("input");
input.setAttribute("onfocusout", "myFunction()");

function myFunction() {
    document.getElementById("delete-cell").addEventListener("click", function () {
        deleteCell();
    });
}

function deleteCell() {
    alert(1);
}

1 个答案:

答案 0 :(得分:1)

尝试将on-focusout侦听器添加到相关的元素类,然后为元素focusout添加“to-delete”类(使用“this”属性)。但是,只有在首次从所有元素中删除它之后才添加此“删除”类。这应该让您拨入与最近焦点事件相关的元素。

 $(".element-class").on("focusout", function() {
     $(".element-class").removeClass("to-delete");
     $(this).addClass("to-delete");
 })

然后只需编写一个函数,该函数将删除带有“to-delete”类的元素,该类由点击事件触发。

这是小提琴:https://jsfiddle.net/gbrodzik/ej4czqrc/6/