2016-12-13 161 views
0

我有一个输入,它有事件监听器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功能无法正常工作。为什么以及如何解决这个问题?

+0

你怎么知道'onclick'事件不起作用?它所做的只是防止事件传播。 –

+0

你可以创建一个小提琴 – CognitiveDesire

+0

迈克C.与调试器;和console.log –

回答

1

您的search回调在其参数列表中应该有event。同样适用于searchFocus

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

而且,你可能要检查你的DOMContentLoaded处理程序射击。根据脚本的组织/加载方式,可能已经加载了DOM,并且在注册处理程序之前触发了该事件。这是一个普遍的疏忽。 How to detect if DOMContentLoaded was fired