想要實現的功能:當input框失焦且點擊的不是清除鍵時,執行reset方法重置input樣式,當點擊清除鍵時,執行clear方法,清除input內容。如圖
本想通過如下代碼來實現
$(".search-input").focusout(function () {
if (document.activeElement.className !== 'close-t') {//close-t爲清除鍵類名
$('.search-input').addClass('search-before');
$('.close').css('display', 'none');
document.getElementById('search').value = '';
}
});
以外的發現,當inpu框失焦後,首先獲得焦點的,竟是body標籤,也因爲這樣,該方法失效了,最後採用以下代碼來實現的該功能 $("#search").focusout(function () {
//判斷失焦後是否點擊的是清除鈕,若是則不重置
var tapCloseButton = false;
$('.close-t').focus(function () {
tapCloseButton = true;
});
setTimeout(function () {
if (!tapCloseButton) {
$('.search-input').addClass('search-before');
$('.close').css('display', 'none');
document.getElementById('search').value = '';
}
},10);
});
將焦點判斷這一步驟延遲執行,故此時焦點已經從body上移到了真正所點擊的元素上,此時再對焦點進行判斷,看是否爲清除鍵。