Ok, więc szukam jak w Google, wpisujesz tekst na wejściu i natychmiast podajesz wpisy. Ale tego nie lubię. Używam czegoś takiego: $("TEXTINPUT").keyup(function() {
. Gdy użytkownik pisze bardzo szybko, łączy się z bazą danych wiele razy. Czy jest możliwe, że połączymy się z plikiem PHP tylko wtedy, gdy użytkownik przestanie pisać przez 1-2 sekundy, ale nie od razu? Muszę to zrobić w jQuery. Dzięki.Jak dławić oddzwonienie zdarzenia jQuery?
Odpowiedz
Spróbuj:
var time_out;
$("TEXTINPUT").keyup(function(){
clearTimeout(time_out);
time_out = setTimeout(your_function, 500);
}
function your_function()
{
/*CHECK DATABASE*/
}
Oto jak to zwykle zbliżyć go:
$(function(){
var tiTO, jqXHR;
$('textinput').keyup(function(){
if (tiTO) clearTimeout(tiTO);
if (jqXHR && jqXHR.abort) jqXHR.abort();
tiTO = setTimeout(function(){
jqXHR = $.ajax({....});
//Ajax call to PHP
},2000);
});
});
Każdy keyup resetuje limit czasu i przerywa żadnego aktywnego ajax.
Jeśli używasz Underscore Library jest to tak proste, jak to:
$("TEXTINPUT").keyup(_.throttle(function() {...}, 150));
Docs z witryny podkreślenia:
przepustnicy _.throttle (funkcja, czekaj)
Zwraca dławiony w wersji z funkcji, które, gdy wywoływany wielokrotnie , tylko rzeczywiście wywołać funkcję owinięte co najwyżej raz na każde czekają milisekund. Przydatny w przypadku zdarzeń ograniczających szybkość, które pojawiają się szybciej niż jest to możliwe.
Istnieje również debounce
funkcja:
nieczułości _.debounce (funkcja, czekaj)
Wywołanie debounced funkcję będzie odroczyć jego wykonanie, aż po czekać milisekund mieć minęło od ostatniego wywołania funkcji . Przydatny do implementacji zachowania, które powinno się zdarzyć tylko po zatrzymaniu wprowadzania danych. Na przykład: renderowania podglądu z komentarzem Markdown, przeliczania układ po szyba przestał być zmieniany ...
+1 za podkreślenie :) –
Jest tylko jeden problem: co, jeśli * wystarczy * zmniejszyć przepustowość połączenia zwrotnego? Nikt nie potrzebuje do tego biblioteki - wystarczy podstawowa znajomość javascript w przeglądarce. –
Funkcja ta będzie działać trochę jak underscore.js, ale bez dodatkowego uzależnienia. Przekaże także zakres i argumenty, które wywołuje, do funkcji zawijanej. W odróżnieniu od odpowiedzi YoannM, zwraca ona samoistne wywołanie zwrotne, które nie używa żadnych zmiennych zewnętrznych (EG, używaj tyle razy, ile chcesz).
function throttle (func, wait) {
return function() {
var that = this,
args = [].slice(arguments);
clearTimeout(func._throttleTimeout);
func._throttleTimeout = setTimeout(function() {
func.apply(that, args);
}, wait);
};
}
Używanie byłoby prawie identyczne z biblioteką underscore.js.
$('input').on('input keyup', throttle(function() {
// ...
}, 100));
Myślę, że to jest wyłamywanie, a nie dławienie zachowania –
To dobry punkt; Nie miałem zbyt jasnego rozróżnienia na oderwanie od rozróżnienia przepustnicy, kiedy odpowiadałem na pytanie. Ironia polega na tym, że była to adaptacja funkcji "przepustnicy" podkreślenia. @ ХристоПанайотов być może mógłbyś wyjaśnić: http://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function (Brak szczególnie dobrej odpowiedzi.) –
- 1. RabbitMQ jak dławić konsumenta
- 2. Jak mogę dławić wątki Pythona?
- 3. Jak testować zdarzenia klawiatury jQuery?
- 4. Jak dławić klientów w interfejsie API REST
- 5. jQuery kliknij element zdarzenia
- 6. Jquery .on() zgłoszenie zdarzenia
- 7. Zdarzenia wideo HTML5 jQuery
- 8. Odłączanie zdarzenia jQuery ajaxSuccess
- 9. Propagacja zdarzenia kliknięcia Jquery
- 10. jQuery traci fokus zdarzenia
- 11. Oddzwonienie do zmienionych atrybutów ActiveRecord?
- 12. Jak powiązać zdarzenia jquery w moim widoku?
- 13. Jak obsługiwać jQuery UI Selectmenu zdarzenia zmiany
- 14. Jak odświeżyć dane zdarzenia w Jquery fullcalendar
- 15. Jak niestandardowe zdarzenia jQuery działają dokładnie
- 16. Jak zamówić zdarzenia związane z jQuery
- 17. Jak przypisać oddzwonienie, gdy użytkownik zmieni rozmiar QMainWindow?
- 18. jQuery wyzwalać zdarzenia zmiany DatePicker
- 19. jQuery nie obsługuje zdarzenia postmessage?
- 20. wywołanie zwrotne zdarzenia jquery change
- 21. Oddzwonienie z GitHub
- 22. oddzwonienie w systemie Android?
- 23. Ukryj wiele elementów za pomocą jQuery i uzyskaj jeden oddzwonienie
- 24. Dodawanie zdarzenia jquery mobile machnięcia
- 25. zdarzenia kliknięcia wyrzuceniu dwukrotnie - jquery
- 26. Równoważnik przestarzałego zdarzenia jQuery Toggle
- 27. Oddzwonienie do selera apply_async
- 28. Knockout.js ViewModel zmienić oddzwonienie?
- 29. Oddzwonienie po __doPostBack()?
- 30. Pobieranie pliku zakończone oddzwonienie
użyć 'setTimeout' z' keyup' fucntion – diEcho
Potrafię zrozumieć tag PHP tutaj, ale mysql? –