chrome下判斷點擊input上標籤還是其餘標籤

想要實現的功能:當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上移到了真正所點擊的元素上,此時再對焦點進行判斷,看是否爲清除鍵。
發佈了109 篇原創文章 · 獲贊 11 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章