2016-12-13 165 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