Pozastavení ajax-volání

Jak se vyvarovat odeslání dotazu s každou klávesou

Například u autocomplete funkcí často nechceme odesílat dotaz s každým vloženým znakem do input políčka, ale až po chvíli při dokončení zadávání.

Jak tedy jednoduše zpomalit odesílání dotazů až na poslední písmeno? Vytvoření obalovací funkce našeho eventu na keyup

function throttle(f, delay){ var timer = null; return function(){ var context = this, args = arguments; clearTimeout(timer); timer = window.setTimeout(function(){ f.apply(context, args); }, delay || 500); }; }

Nyní již stačí funkcí throttle obalit naše původní volání function(){...}

$('#search').keyup(throttle(function(){ // odeslání dotazu přes ajax }));

JavaScript září 2018