2017-06-18 46 views
0

所以我有一個搜索框,複選標記和加載微調器的頁面。當用戶關注搜索框時,微調器會淡入。用戶不在搜索框上對焦,微調器淡出。我有一個功能可以在用戶按下搜索框中的回車符後切換複選標記,但是,我希望複選標記永遠保持可見狀態。到目前爲止,當用戶按下輸入鍵時,它將切換對號並很快淡出,因爲自動調用了未對焦功能。如何在事件之後稍微重寫一個jQuery函數?

切換對號功能:

$('#searchText').on('keypress', function (e) { 
    if (e.which === 13) { 
     var val = $('#searchText').val(); 
     $('.circle-loader').toggleClass('load-complete'); 
     $('.checkmark').toggle(); 

     alert(val); 
     return false; 
    } 
}); 

淡入淡出功能:

$(function() { 
    $('#searchText').focusin(function() { 
     $('#check').fadeIn(); 

    }).focusout(function() { 
     $('#check').fadeOut(); 
    }); 
}); 

我如何可以覆蓋淡入和淡出函數(或者重寫本),以阻止用戶按下時在搜索框中輸入?

在此先感謝。

回答

1

使用jQuery .stop方法。當在元素上調用.stop()時,當前正在運行的動畫(如果有)立即停止。例如,如果一個元素被.slideUp()隱藏,當調用.stop()時,該元素現在仍然會顯示,但是會是其之前高度的一小部分。回調函數不被調用。

https://api.jquery.com/stop/

0

我會用布爾接近這表明如果搜索已經執行。以下面爲例。不知道你的代碼的結構,我把它做成全局的,但是可以改爲檢查一個特定的對象。

切換對號功能:

var searchPerformed = false; 
$('#searchText').on('keypress', function (e) { 
    if (e.which === 13) { 
     searchPerformed = true; 
     var val = $('#searchText').val(); 
     $('.circle-loader').toggleClass('load-complete'); 
     $('.checkmark').toggle(); 

     alert(val); 
     return false; 
    } 
}); 

淡入淡出功能:

$(function() { 
    $('#searchText').focusin(function() { 
     $('#check').fadeIn(); 

    }).focusout(function() { 
     if (!searchPerformed) 
      $('#check').fadeOut(); 
    }); 
}); 
0

修正了

$('#searchText').unbind("focusin"); 
    $('#searchText').unbind("focusout"); 
在切換對號功能

。 感謝替代方法以及所有人,將在未來得心應手。

相關問題