事件处理程序不起作用

时间:2016-12-13 19:50:09

标签: javascript events

我有一个输入,其中包含事件监听器 onblur 和具有事件监听器 onclick 的按钮。 这就是我组织它的方式

document.addEventListener("DOMContentLoaded", function() { 
    window.searchButton = document.getElementById("searchButton");
    window.searchInput = document.getElementById("searchInput");

    searchInput.onfocus = searchFocus;
    searchInput.onblur = searchBlur;
    searchButton.onclick = search;
});

var resize = function(self, newSize) {
    self.setAttribute("size", newSize);
};

var searchFocus = function() {
    event.stopPropagation();
    resize(searchInput, 30);
};

var searchBlur = function() {
    if (searchInput.value === "") {
        resize(searchInput, 10);
    }
};

var search = function() {
    event.stopPropagation();
};

但是当输入被聚焦并且我点击按钮时,使用onblur功能,但是onclick功能不起作用。为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的search回调应在其参数列表中包含eventsearchFocus

也是如此
var search = function(event){
  event.stopPropagation();
};

此外,您可能想要检查您的DOMContentLoaded处理程序是否正在触发。根据脚本的组织/加载方式,可能已经加载了DOM,并且在注册处理程序之前触发了该事件。这是一个常见的疏忽。 How to detect if DOMContentLoaded was fired